我试图与默认值的结构,如下所述:默认值中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

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

有帮助吗?

解决方案

您没有定义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 = { ... };

因为它是,你是两头。

其他提示

此:

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

应该是:

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

既然你已经定义的名称tokens意味着struct tokens

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top