C A variável possui um inicializador incompleto
-
26-09-2019 - |
Pergunta
Estou tentando fazer uma estrutura com um valor padrão, conforme descrito aqui: Valores padrão em uma estrutura C. No entanto, eu tenho esse código C, dentro de um arquivo de cabeçalho:
/* tokens.h */
typedef struct {
char *ID;
char *KEY;
char *TYPE;
} tokens;
const struct tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
E estou recebendo um erro na linha 7 dizendo:
error: variable 'TOKENS_DFLT' has initializer but incomplete type
Alguém pode me explicar qual é esse problema e como posso consertá -lo e evitá -lo no futuro?
Solução
Você não definiu struct tokens
. Você definiu um sem nome struct
e simultaneamente typedef
-ed It para o nome do tipo tokens
.
Se você tivesse definido
typedef struct tokens_ {
char *ID;
char *KEY;
char *TYPE;
} tokens;
Então você pode declarar sua constante como qualquer:
const struct tokens_ TOKENS_DFLT = { ... };
Ou
const tokens TOKENS_DFLT = { ... };
Como é, você está entre dois bancos.
Outras dicas
Este:
const struct tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
deveria estar:
const tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
Já que você definiu o nome tokens
significar struct tokens
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow