c/c++语言开发共享错误:可能无法初始化可变大小的对象

#define L 1 #define M L+1 int main(void){ int N=L*M*2; char s [N]={'1','2'}; printf("%d", sizeof(s)); return 1; } 

为什么上面的代码无法编译? Eclipse的编译器说了两件事:

    因为我无法初始化类型为arr [x]的数组,其中x是可变的?

    实际上,在C99之前,数组大小必须是一个常量表达式 。 在C99中,使用可变长度数组放宽了这一点。

    (这与宏无关。)

    数组初始值设定项中的多余元素 – 这是什么意思?

    解决第一个问题,这应该消失。

    示例中的数组大小由N指定,该值不是常量。 这意味着您的数组是VLA(可变长度数组)。 C语言不允许VLA声明中的初始化器。

    为了编译它, N必须将我变成一个常数(因为ML是常数, N也可以是常数)。 使用#define声明N或作为枚举成员。

    如果我没记错的话,

     char s [N]={'1','2'}; 

    N需要是常数

      以上就是c/c++开发分享错误:可能无法初始化可变大小的对象相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

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

      ctvol管理联系方式QQ:251552304

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

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

      精彩推荐