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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top