有段时间没写C,又习惯了Python的动态定义使用,又一次栽在C的声明上。 c++
C对变量声明的位置,要求以下:
C89标准不容许在随便位置声明变量,C中的变量声明不能放在任何可执行语句以后,只容许在块的开始处。
C99和C++ (c++是从98年标准化) 放松了限制,容许在随便位置声明变量,这个规定更合理。
c99是99年出的,vc6于98年面世的,因此VC6只支持C89标准,并且对c++的支持也不完善。
gcc从3开始就支持新标准。 spa
但用vs2012编译C,默认编译设置,这货竟然以C89标准编译代码,
由于产生代码时偷懒,使用vs的模板,一个for就出来以下代码: 调试
for (int i = 0; i < length; i++) { ... }
编译提示: code
: error C2143: syntax error : missing ';' before 'type'没晃过神,调试了会,才想起坑爹的声明,改之, 记下这个坑:
int i; ... for (i = 0; i < length; i++) { ... }