Question

Je suis en train de faire une struct avec une valeur par défaut, comme décrit ici: Les valeurs par défaut dans un C Struct . Cependant, j'ai ce code C, dans un fichier d'en-tête:

/* tokens.h */
typedef struct {
    char *ID;
    char *KEY;
    char *TYPE;
} tokens;

const struct tokens TOKENS_DFLT = {
    "id",
    "key",
    "type"
};

Et je reçois une erreur sur la ligne 7 dit:

error: variable 'TOKENS_DFLT' has initializer but incomplete type

Quelqu'un peut-il s'il vous plaît me expliquer ce que ce problème est et comment je peux le réparer et l'empêcher à l'avenir?

Était-ce utile?

La solution

Vous n'avez pas défini struct tokens. Vous avez défini un struct sans nom et en même temps typedef-ed au tokens nom du type.

Si vous aviez défini à la place

typedef struct tokens_ {
    char *ID;
    char *KEY;
    char *TYPE;
} tokens;

Ensuite, vous pouvez déclarer votre constante soit :

const struct tokens_ TOKENS_DFLT = { ... };

ou

const tokens TOKENS_DFLT = { ... };

Comme il est, vous êtes assis entre deux chaises.

Autres conseils

const struct tokens TOKENS_DFLT = {
    "id",
    "key",
    "type"
};

devrait être:

const tokens TOKENS_DFLT = {
    "id",
    "key",
    "type"
};

Puisque vous avez défini le nom tokens signifie struct tokens.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top