我试图在C中的main方法中创建一个循环,并且它没有编译。
以下是代码:
int i = 1;
while (i < 10)
{
i++;
}
int x;
int a;
int b;
int sum;
sum = a + b;
它没有编译,因为这个错误:
Error 3 error C2143: syntax error : missing ';' before 'type'
此错误出现在循环后声明的所有变量中。
但是,如果我在这些变量声明之后编写循环,它就可以正常工作。
那为什么我不能在变量声明之前写一个循环?
答案 0 :(得分:6)
在C89中,所有变量都应该在代码块的顶部声明,即直接在{
之后,它们不必在函数的顶部声明。在C99及以后,它们可以在任何地方声明。如果你的函数中有一段代码需要使用一组变量,那么函数的其余部分就不能将这部分包含在一个块{...
}中。
答案 1 :(得分:1)
这是过时的Microsoft Visual C编译器的典型响应,它不支持最新的C标准。似乎他们已经陷入困境。
只需在循环之前移动变量,一切都应该没问题。