c/c++语言开发共享数组定义 – 表达式必须具有常量值

我正在堆栈上创建一个数组

static const int size = 10; void foo() { .. int array[size]; .. } 

但是,我得到编译错误:“表达式必须具有常量值”,即使size是常量。 我可以使用宏

 #define SIZE (10) 

但我想知道为什么size标记const会导致编译错误。

    在C语言中,关键字const常量无关。 在C语言中,根据定义,术语“常量”是指文字值和枚举常量。 如果你真的需要一个常量,那么你必须使用它:要么使用文字值(定义一个宏来给你的常量命名),要么使用枚举常量。

    (请阅读此处了解更多详细信息: 我是否更喜欢常量而不是定义? )

    此外,在C99及更高版本的语言中,可以将非常量值用作本地数组的数组大小。 这意味着你的代码应该在现代C中编译,即使你的size不是常数。 但是你显然使用的是较旧的编译器,所以在你的情况下

     #define SIZE 10 

    是正确的方法。

    答案是在另一个stackoverflow问题, 这里

    这是因为使用const修饰符声明的C对象不是真正的常量。 const的一个更好的名称可能只是readonly – 它的真正含义是编译器不会让你改变它。 并且您需要使用真常量来初始化具有静态存储的对象(我怀疑regs_to_read是全局的)。

      以上就是c/c++开发分享数组定义 – 表达式必须具有常量值相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560413.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐