偷懶的後果,又栽在C語言的變量聲明上

有段時間沒寫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++)
{
    ...
}
相關文章
相關標籤/搜索