C variable est initialisée incomplète
-
26-09-2019 - |
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?
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
.