我正在开发一个带有C2000编译器的TI TMS320x DSP的C项目。我试图在for循环中直接初始化一个循环变量,但不知何故我得到一个编译器错误:
代码:
for (int TabCnt = 0; TabCnt < 10; TabCnt++)
{
x++;
}
错误:
error #20: identifier "TabCnt" is undefined
我认为这可能是一个错误的编译器设置?如果我在循环之外声明变量,它就可以完美地运行。
答案 0 :(得分:3)
那是因为您使用的是仅支持C89的编译器。
此语法:
for (int TabCnt = 0; TabCnt < 10; TabCnt++)
仅在C99之后有效。解决方案是,如果支持,则启用C99,或者在块的开头声明变量,例如:
void foo()
{
int x = 0;
int TabCnt;
for (TabCnt = 0; TabCnt < 10; TabCnt++)
{
x++;
}
}
答案 1 :(得分:0)
int TabCnt;
for(TabCnt = 0; TabCnt < 10; TabCnt++)
将解决您的问题,因为您的编译器似乎不支持C99。
尝试使用-std=c99
进行编译,因为您的语法只允许来自C99