【问题标题】:Constant Integer and Array Initialization in CC中的常量整数和数组初始化
【发布时间】:2018-04-11 02:35:10
【问题描述】:

我有这样的表达方式:

const int numPlayers = 2;
player players[numPlayers];

这是一个用户定义类型播放器的数组(使用结构)。但是,我收到一条错误消息,指出 numPlayers 必须是一个常量值。

expression must have a constant value

我做错了什么?


我也像这样初始化了数组:

player *players = (player*)calloc(sizeof(player), numPlayers);

但是如果程序不崩溃,我无法访问结构的任何局部变量。

【问题讨论】:

标签: c arrays constants


【解决方案1】:

在 C99 中,下面的代码在函数中可以正常工作。它是一个可变长度数组 (VLA)。

const int numPlayers = 2;
player players[numPlayers];

否则使用#define 作为真正的常量

#define numPlayers 2
player players[numPlayers];

【讨论】:

    【解决方案2】:

    const 不是真正的常量,编译器将不允许您仅更改值。我会建议改用#define numPlayers 2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 2019-06-24
      • 1970-01-01
      相关资源
      最近更新 更多