我很难理解为什么在尝试编译时出现以下代码中的错误:
#include <stdlib.h>
#include <stdio.h>
int main()
{
puts("");
int i = 0;
return 0;
}
如果我注释掉puts("");
,它就会编译。
我正在使用Visual Studio,并使用/TC
将其作为C代码编译。
答案 0 :(得分:8)
Visual Studio C有点过时,使用C89。
对于C89,您必须在scope block的开头声明所有变量。
对于上面的代码,这应该有效
int main()
{
int i = 0;
puts("");
return 0;
}
请注意,您还可以执行以下操作
int main()
{
puts("");
{
int i = 0;
}
return 0;
}
答案 1 :(得分:1)
我认为您使用的是较旧的C标准C89。
C89标准不允许在某些函数调用后声明变量。所有变量声明都应该在范围块的开头(谢谢,Gearoid Murphy )。