在C中声明一个局部变量

时间:2013-09-18 11:06:54

标签: c visual-studio

我很难理解为什么在尝试编译时出现以下代码中的错误:

#include <stdlib.h>
#include <stdio.h>

int main()
{
    puts("");
    int i = 0;

    return 0;
}

如果我注释掉puts("");,它就会编译。

我正在使用Visual Studio,并使用/TC将其作为C代码编译。

2 个答案:

答案 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 )。