偷懒的后果,又栽在C语言的变量声明上

有段时间没写C,又习惯了Python的动态定义使用,又一次栽在C的声明上。

C对变量声明的位置,要求如下:
C89标准不允许在随便位置声明变量,C中的变量声明不能放在任何可执行语句之后,只允许在的开始处。 
C99和C++ (c++是从98年标准化) 放松了限制,允许在随便位置声明变量,这个规定更合理。
c99是99年出的,vc6于98年面世的,所以VC6只支持C89标准,而且对c++的支持也不完善。
gcc从3开始就支持新标准。

但用vs2012编译C,默认编译设置,这货居然以C89标准编译代码,
因为产生代码时偷懒,使用vs的模板,一个for就出来如下代码:

for (int i = 0; i < length; i++)
{
    ...
}

编译提示:

: error C2143: syntax error : missing ';' before 'type'
没晃过神,调试了会,才想起坑爹的声明,改之, 记下这个坑:
int i;
...
for (i = 0; i < length; i++)
{
    ...
}


你可能感兴趣的:(c)