我正在使用C2000编译器为TI TMS320x DSP进行C项目。我试图直接在for循环中初始化循环变量,但不知何故我得到了编译器错误:

码:

for (int TabCnt = 0; TabCnt < 10; TabCnt++)
{
    x++;
}

错误:
error #20: identifier "TabCnt" is undefined

我认为这可能是错误的编译器设置?如果我在循环外声明变量,则它可以完美工作。

最佳答案

那是因为您使用的是仅支持C89的编译器。

这个语法:

for (int TabCnt = 0; TabCnt < 10; TabCnt++)

从C99开始才有效。解决方案是启用C99(如果受支持),或者在块的开头声明变量,例如:
void foo()
{
    int x = 0;
    int TabCnt;
    for (TabCnt = 0; TabCnt < 10; TabCnt++)
    {
        x++;
    }
}

08-06 16:15