错误C2143:语法错误:缺少';'在'类型'之前

时间:2013-03-29 04:10:18

标签: c visual-studio-2010

我是编程C的新手..请告诉我这个程序有什么问题,以及为什么我收到此错误:错误C2143:语法错误:缺少';'在“打字”之前 ....

extern void func();

int main(int argc, char ** argv){
    func();
    int i=1;
    for(;i<=5; i++) {
        register int number = 7;
        printf("number is %d\n", number++);
    }
    getch();
}

3 个答案:

答案 0 :(得分:29)

Visual Studio仅支持C89。这意味着所有变量必须在函数顶部的任何其他变量之前声明。

编辑:@KeithThompson敦促我添加一个技术上更准确的描述(并且真正正确地指出我的方法并非如此)。所有声明(变量或其他任何声明)必须在块中的所有语句之前。

答案 1 :(得分:28)

我至少8年没有使用visual,但似乎Visual的有限C编译器支持不允许混合代码和变量。是int i=1;声明的错误行吗?尝试将其移至func();

的调用之上

另外,我会使用extern void func(void);

答案 2 :(得分:1)

这样:

int i=1;
for(;i<=5; i++) {

应该用惯用语写成:

for(int i=1; i<=5; i++) {

因为没有必要在函数范围内声明for循环变量。