'for'循环初始声明在C99模式之外使用

时间:2015-05-11 05:07:02

标签: c dev-c++

为什么我收到错误的任何想法?我以为我做得很好,在编码之前没有显示任何错误?

for (int i=0;i<height;i++)
{
    if (i == 0 || i == height-1 )
    {
        for (int j=0;j<width;j++)
        {
            printf("%i_",paddings);
            if (j == width-1)
            {
                printf("%i\n",paddings);
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

这是ANSI C时代的阻碍。基本上,它意味着您必须声明变量以便在for循环中使用,如下所示:

// Looping variables declared outside the loops
int i, j;

for (i = 0; i < n; i++)
{
    if (i == 0 || i == height - 1)
    {
        for (j = 0; j < width; j++)
        {
            printf("%i_", paddings);
            if (j == width - 1)
            {
                printf("%i\n", paddings);
            }
        }
    }
}

或者,您可以更改编译器标志,以便它使用C99或更高版本。对于gcc,这只需要添加编译标记-std=c99,或者添加C11,-std=c11

答案 1 :(得分:0)

for (int i = 0; ...)

是C99扩展名;为了使用它,你必须通过gcc

中的特定编译器标志启用它

对于像C89这样的旧标准是:

int i;
for (i = 0; ...)

您必须在循环之外声明变量。