Переменная C имеет неполный инициализатор - PullRequest
0 голосов
/ 18 ноября 2010

Я пытаюсь создать структуру со значением по умолчанию, как описано здесь: Значения по умолчанию в структуре C .Тем не менее, у меня есть этот код 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

Может кто-нибудь, пожалуйста, объясните мне, что этопроблема и как я могу это исправить и предотвратить это в будущем?

Ответы [ 2 ]

3 голосов
/ 18 ноября 2010

Вы не определили struct tokens.Вы определили безымянный struct и одновременно typedef -ed его в типовое имя tokens.

Если вы вместо этого определили

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

Тогда вы можете объявить свойконстанта как либо :

const struct tokens_ TOKENS_DFLT = { ... };

Или

const tokens TOKENS_DFLT = { ... };

На самом деле вы находитесь между двумя испражнениями.

2 голосов
/ 18 ноября 2010

Это:

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

должно быть:

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

Поскольку вы определили имя tokens как struct tokens.

...