c++ - IAR中表达式必须有常量值错误如何解决?

标签 c++ c iar

我收到编译错误:“表达式必须具有常量值”,即使大小是常量。我的错在哪里,我找不到它?

 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/

相关文章:

c - C 中 open(...O_DIRECT) 的可移植性?

c++ - 缺少类模板的参数列表,但 Visual C++ 没有

c# - 在没有头文件的情况下声明 COM 接口(interface)指针

c++ - x 时间后如何中止 Winsock 连接

c - 使用 pthread_barrier_wait 是否确保变量可见性?

c - 堆栈 'CSTACK' 的堆栈指针超出堆栈范围

c - 如何为 IAR Embedded Workbench 项目配置 Ceedling?

c++ - 固定大括号(大括号匹配)工具

c++ - 给定结构的大小

c - 假设 pid_t 始终是 int 类型(如标准中所定义)是否安全?