2010-11-18 13 views
0

ここで説明するように、デフォルト値で構造体を作成しようとしています:Default values in a C StructC変数に不完全な初期化子があります

/* 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 

は、誰もがこの問題が何であるかを私に説明していただけますとどのようにしかし、私は、ヘッダファイル内で、このCコードを持っています私はそれを修正し、将来それを防ぐことができますか?

答えて

3

struct tokensを定義していません。 structという名前のないものを定義し、それと同時にtypedef-tokensの名前を付けました。

あなたの代わりに

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

を定義していたなら、あなたはいずれかとしてあなたの定数を宣言することができます:

const struct tokens_ TOKENS_DFLT = { ... }; 

それとも

const tokens TOKENS_DFLT = { ... }; 

それがあるとして、あなたが間です2つの便。

+0

ありがとう、それは –

+0

を修正しました。警告:「空の宣言で無駄なストレージクラス指定子」 –

2

この:

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

は次のようになります。

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

あなたがstruct tokensを意味する名前tokensを定義しましたので。

関連する問題