我在gcc下使用默认C语言。C使用现有的常量变量初始化const结构成员
我的代码:
typedef struct _OpcodeEntry OpcodeEntry;
//
struct _OpcodeEntry
{
unsigned char uOpcode;
OpcodeMetadata pMetadata;
};
//
const OpcodeMetadata omCopyBytes1 = { 1, 1, 0, 0, 0, 0, &CopyBytes };
const OpcodeEntry pOpcodeTable[] =
{
{ 0x0, omCopyBytes1 },
};
错误:
error: initializer element is not constant
error: (near initialization for 'pOpcodeTable[0].pMetadata')
如果我将omCopyBytes1
更改为上述行中实际设置的值,代码编译得很好。我究竟做错了什么?
是否需要使用常量表达式来初始化C99中的所有聚合?在C99标准的6.7.8节中我没有看到这样的内容(静态存储持续时间的对象除外)。 – jamesdlin 2013-03-26 10:35:02