Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top