Używam domyślnego C pod gcc.C zainicjować element const struct z istniejącą zmienną stałą
mój kod:
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 },
};
Błędy:
error: initializer element is not constant
error: (near initialization for 'pOpcodeTable[0].pMetadata')
Jeśli zmienię omCopyBytes1
na to, co faktycznie jest ustawione w powyższym wierszu, kod kompiluje poprawnie. Co ja robię źle?
Czy rzeczywiście potrzebne są wyrażenia stałe do zainicjowania wszystkich agregatów w C99? Nic nie widzę w sekcji 6.7.8 standardu C99, mówiąc tak (poza przedmiotami o statycznym czasie przechowywania). – jamesdlin