C Variable hat unvollständige Initialisierer
-
26-09-2019 - |
Frage
Ich versuche, eine Struktur mit einem Standardwert zu machen, wie hier beschrieben: Standardwerte in eine C Struct . Allerdings habe ich diese C-Code, in einer Header-Datei:
/* tokens.h */
typedef struct {
char *ID;
char *KEY;
char *TYPE;
} tokens;
const struct tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
Und ich bin immer einen Fehler in Zeile 7 zu sagen:
error: variable 'TOKENS_DFLT' has initializer but incomplete type
Kann jemand mir bitte erklären, was das Problem ist und wie kann ich es beheben und es in Zukunft verhindern?
Lösung
Sie haben nicht struct tokens
definiert. Sie haben einen ungenannten struct
definiert und gleichzeitig typedef
-ed es auf dem Typnamen tokens
.
Wenn Sie hatte stattdessen definiert
typedef struct tokens_ {
char *ID;
char *KEY;
char *TYPE;
} tokens;
Dann könnte erklären Sie sich konstant als entweder :
const struct tokens_ TOKENS_DFLT = { ... };
oder
const tokens TOKENS_DFLT = { ... };
Wie es ist, bist du zwischen zwei Stühlen.
Andere Tipps
Dieses:
const struct tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
sollte:
const tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
Da Sie den Namen tokens
auf mittlere struct tokens
definiert haben.