在for语句中声明变量时出错

时间:2014-02-11 08:48:04

标签: c visual-studio-2010 variables for-loop

在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并且按预期工作。
感谢大家提供有价值的信息。

5 个答案:

答案 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编译器,代码将编译得很好。