0

ここで説明するように、デフォルト値で構造体を作成しようとしています:CStructのデフォルト値。ただし、ヘッダーファイル内に次のCコードがあります。

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

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

そして、7行目で次のようなエラーが発生しています。

error: variable 'TOKENS_DFLT' has initializer but incomplete type

誰かがこの問題が何であるか、そして私がそれを修正して将来それを防ぐことができる方法を私に説明できますか?

4

2 に答える 2

3

を定義していませんstruct tokens。名前のないものを定義しstruct、同時にtypedefそれをタイプ name に編集しましたtokens

代わりに定義した場合

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

次に、定数を次のいずれかとして宣言できます。

const struct tokens_ TOKENS_DFLT = { ... };

または

const tokens TOKENS_DFLT = { ... };

そのままでは、あなたは 2 つのスツールの間にいます。

于 2010-11-18T13:57:40.550 に答える
2

これ:

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

次のようにする必要があります。

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

tokens名前を意味するように定義したのでstruct tokens

于 2010-11-18T13:58:44.417 に答える