MsVc++ weird error: not declared variable
MsVc++ weird error: not declared variable
编译器出现此错误:
1>....\server\sv_init.c(528): error C2143: syntax error : missing ';' before 'type'
1>....\server\sv_init.c(529): error C2065: 'v' : undeclared identifier
...(all instruction lines containing v)
这是代码的一部分:
while(shl>=7) {
shl-=7;
int v = (sh>>shl)&127;// <-- Error is here
if (v==0 || v=='"' || v=='%' || v=='@') {
tmp[ol++] = '@';
// Com_Printf("OUT:%02X\n",tmp[ol-1]);
if (ol==sizeof(tmp)-1) {
tmp[ol]=0;
if (csnr==PURE_COMPRESS_NUMCS) {
Com_Printf(err_chunk);
return 1;
}
SV_SetConfigstring( MAX_CONFIGSTRINGS-PURE_COMPRESS_NUMCS+csnr, tmp);
csnr++;
ol=0;
}
tmp[ol++] = v+1;
} else {
tmp[ol++] = v;
}
我尝试删除错误行之前的行代码构建正常,非常欢迎任何帮助或建议。
您的代码正在 C 模式下编译(因为文件的扩展名为 .c)。在 C 模式下,您不能在语句之后声明变量。您有三个选择:
- 更改代码以在封闭范围的开头声明变量,如下所示:
while(shl>=7) {
int v; // declaration
shl-=7;
v = (sh>>shl)&127;
如果有很多这样的代码,工作量可能会很大。
- 通过将文件扩展名更改为 .cpp 或指定 /TP 选项以 C++ 模式编译。这可能有效,因为 C++ 主要是 C 的超集,但有一些 C++ 不允许的 C 构造。
- 使用在 C 中支持此功能的其他编译器,例如 GCC。
编译器出现此错误:
1>....\server\sv_init.c(528): error C2143: syntax error : missing ';' before 'type' 1>....\server\sv_init.c(529): error C2065: 'v' : undeclared identifier
...(all instruction lines containing v)
这是代码的一部分:
while(shl>=7) {
shl-=7;
int v = (sh>>shl)&127;// <-- Error is here
if (v==0 || v=='"' || v=='%' || v=='@') {
tmp[ol++] = '@';
// Com_Printf("OUT:%02X\n",tmp[ol-1]);
if (ol==sizeof(tmp)-1) {
tmp[ol]=0;
if (csnr==PURE_COMPRESS_NUMCS) {
Com_Printf(err_chunk);
return 1;
}
SV_SetConfigstring( MAX_CONFIGSTRINGS-PURE_COMPRESS_NUMCS+csnr, tmp);
csnr++;
ol=0;
}
tmp[ol++] = v+1;
} else {
tmp[ol++] = v;
}
我尝试删除错误行之前的行代码构建正常,非常欢迎任何帮助或建议。
您的代码正在 C 模式下编译(因为文件的扩展名为 .c)。在 C 模式下,您不能在语句之后声明变量。您有三个选择:
- 更改代码以在封闭范围的开头声明变量,如下所示:
while(shl>=7) { int v; // declaration shl-=7; v = (sh>>shl)&127;
如果有很多这样的代码,工作量可能会很大。
- 通过将文件扩展名更改为 .cpp 或指定 /TP 选项以 C++ 模式编译。这可能有效,因为 C++ 主要是 C 的超集,但有一些 C++ 不允许的 C 构造。
- 使用在 C 中支持此功能的其他编译器,例如 GCC。