26

我是 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();
}
4

3 回答 3

34

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

编辑:@KeithThompson 促使我添加一个技术上更准确的描述(并且真的只是正确的,我的不是在一个方面)。所有声明(变量或其他任何东西)必须在块内的所有语句之前。

于 2013-03-29T04:17:48.910 回答
29

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

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

于 2013-03-29T04:18:01.630 回答
1

这:

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

应该习惯性地写成:

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

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

于 2013-03-29T04:17:44.887 回答