有段時間沒寫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++) { ... }