编译器正在上升此错误:
1> .... \ server \ sv_init.c(528):错误C2143:语法错误:缺少&#39 ;;'之前'键入' 1> .... \ server \ sv_init.c(529):错误C2065:' v' :未声明的标识符
...(包含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;
}
我试图在错误行之前删除代码构建正常的行,感谢欢迎任何帮助或建议。
答案 0 :(得分:1)
您的代码正在C模式下编译(因为该文件的扩展名为.c)。在C模式下,您无法在语句后声明变量。您有三种选择:
while(shl>=7) { int v; // declaration shl-=7; v = (sh>>shl)&127;
如果有很多这样的代码,这可能会有很多工作。