今天在編譯一個C文件的時候,VC6.0報的錯誤。
出錯的位置是一個函數:
void Function(const char *param1,char *param2,int param3)
{
for(int i=0;i<param3;i++) //出錯位置
//do somethings...
}
修改後的代碼如下:
void Function(const char *param1,char *param2,int param3)
{
int i;
for(i=0;i<param3;i++) //出錯位置
//do somethings...
}
網上對第一種寫法報錯的原因解釋是:
有一個就是在循環過程中該變量會不斷的被定義.
本人覺得按照 "missing ';' before 'type'",這樣的解釋是合理的.因爲錯誤的翻譯應該是"在類型定義完之後沒有加分號".所以可以認爲該編譯器裏不允許你不斷的在循環裏進行重複的變量定義.
另外還有一種情況也會引起C2143,那就是在函數的定義裏寫了參數的默認值.這一點大家也要注意.