【问题标题】:'for' loop initial declaration used outside C99 mode在 C99 模式外使用的“for”循环初始声明
【发布时间】:2015-07-21 12:06:33
【问题描述】:

任何想法为什么我会收到该错误?我以为我做的一切都很好,在我编码过去之前它没有显示任何错误?

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);
            }
        }
    }

【问题讨论】:

标签: c dev-c++


【解决方案1】:

这是 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

【讨论】:

  • for (int j=0;j
【解决方案2】:
for (int i = 0; ...)

是 C99 扩展;为了使用它,您必须通过 gcc 中的特定编译器标志启用它

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

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

你必须在循环外声明你的变量。

【讨论】:

    猜你喜欢
    • 2011-08-18
    • 2013-01-19
    • 2010-09-06
    • 2017-10-28
    • 2014-09-10
    • 2015-06-02
    • 1970-01-01
    相关资源
    最近更新 更多