在 for 循环中声明一个变量; c2000编译器出错
Declaring a variable inside a for loop; getting error with c2000 compiler
我正在使用 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++;
}
}
int TabCnt;
for(TabCnt = 0; TabCnt < 10; TabCnt++)
将解决您的问题,因为您的编译器似乎不支持 C99。
尝试使用 -std=c99
进行编译,因为您使用的语法仅在 C99
中被允许
我正在使用 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++;
}
}
int TabCnt;
for(TabCnt = 0; TabCnt < 10; TabCnt++)
将解决您的问题,因为您的编译器似乎不支持 C99。
尝试使用 -std=c99
进行编译,因为您使用的语法仅在 C99