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?

Foi útil?

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
scroll top