在C中声明 中的变量是不允许的? 这是代码,
for(int i = 1; i<max; i++)
我收到错误信息,因为,
错误C2143:语法错误:缺少';'在“打字”之前
错误C2065:'i':未声明的标识符
如果我在for循环之前声明变量 i jut,它会起作用,
int i;
for(i = 1; i<max; i++)
我从未期望在如此简单的代码行上出现错误消息。能帮我解释一下这背后的原因吗?
修改
我是Visual C ++ 2010 Express。我正在使用命令行编译器 cl 。
更新
基于回复,我发现Visual C ++ 2010不支持C98。
我最终安装了Visual Studio 2013 Express for Desktop,它支持C98并且按预期工作。
感谢大家提供有价值的信息。
答案 0 :(得分:3)
您可能正在使用pre-C99标准编译器。在C89 / ANSI C中,您必须在范围块的开头声明变量。注意这一点,因为在你做了一些函数调用之后,你很可能会因为声明变量而得到类似的错误。
答案 1 :(得分:2)
MSVC是c89。 c89不允许这样做。使用/TP
选项。此选项是编译的C ++模式。
答案 2 :(得分:1)
只允许在C99中使用。不确定你正在使用什么编译器,clang和gcc有std = c99。
答案 3 :(得分:0)
它是C99,你的编译器可能太旧或没有正确设置使用这个“新”标准。
答案 4 :(得分:0)
对于C语言而言,Visual Studio非常差,并且只支持一个名为C90的24年过时版本的C语言。并且它支持该版本很差。 Microsoft没有严格符合C编译器。
如果您使用真正的C编译器,代码将编译得很好。