我在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