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

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

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

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

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

编辑:@KeithThompson敦促我添加一个技术上更准确的描述(并且真正恰到好处地纠正了我的一方面)。 所有声明(变量或其他任何声明)必须位于块中的所有语句之前。

这个:

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

应该用惯用语写成:

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

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