我需要一些帮助才能找到解决此错误的方法。

typedef struct {
    const char *iName;
    const char *iComment;
} T_Entry;

const T_Entry Menu_PowerSupply = { "PWRS", "Power supply"};

static const T_Entry G_Commands[] = {
    { "MEM", "Memory"},
    {Menu_PowerSupply.iName,Menu_PowerSupply.iComment},
    { "SYS", "System"}
};

我收到错误: 表达式必须有一个常数值
我该如何解决这个问题?

对我来说,在链接时是已知的,并且在具有固定值的固定地址处:我错了

我的目的是将以下代码放入库中
const T_Entry Menu_PowerSupply = { "PWRS", "Power supply"};

以下也不起作用
static const T_Entry G_Commands[] = {
    { "MEM", "Memory"},
    Menu_PowerSupply,
    { "SYS", "System"}
};

如果有人可以帮助我理解这个 non const 值...

最佳答案

错误是因为全局变量的初始化器必须是常量表达式,但即使 Menu_PowerSupply 定义为 const ,它也不是常量表达式。

这类似于:

const int n = 42;
int arr[n];

不能在 C89 中编译,因为 n 不是常量表达式。 (它在 C99 中编译只是因为 C99 支持 VLA)

10-07 19:04
查看更多