我收到编译错误:“表达式必须具有常量值”
,即使大小是常量。我的错在哪里,我找不到它?
void foo(int n)
{
int x[n];
int i = 5;
if (i == 0)
i--;
x[i] = 5; //OK, since i is 4
}
最佳答案
C89 没有变长数组,所以
这行是错误的:
int x[n];
它取决于函数参数n
,它不是编译时常量。
您可以用 malloc
替换原始数组:
int* x = malloc( n * sizeof( int ) );
关于c++ - IAR中表达式必须有常量值错误如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59531838/