C Переменная имеет неполный инициализатор
-
26-09-2019 - |
Вопрос
Я пытаюсь сделать структуру с значением по умолчанию, как описано здесь: Значения по умолчанию в C struct. Отказ Однако у меня есть этот 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
Может кто-нибудь, пожалуйста, объясните мне, что такое проблема и как я могу это исправить и предотвратить его в будущем?
Решение
Вы не определены struct tokens
. Отказ Вы определили Без имени struct
и одновременно typedef
-Удал это названию типа tokens
.
Если вы вместо этого определены
typedef struct tokens_ {
char *ID;
char *KEY;
char *TYPE;
} tokens;
Тогда вы могли бы объявить вашу постоянную как либо:
const struct tokens_ TOKENS_DFLT = { ... };
Или
const tokens TOKENS_DFLT = { ... };
Как это, вы между двумя стулами.
Другие советы
Этот:
const struct tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
должно быть:
const tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
Так как вы определили имя tokens
значить struct tokens
.
Не связан с StackOverflow