0

我正在尝试使用默认值创建一个结构,如此处所述:Default values in a 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

任何人都可以向我解释这个问题是什么以及我如何解决它并在将来防止它?

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 = { ... };

事实上,你在两个凳子之间。

于 2010-11-18T13:57:40.550 回答
2

这:

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

应该:

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

由于您已将名称定义tokensstruct tokens.

于 2010-11-18T13:58:44.417 回答