C变量初始化程序不完整

时间:2010-11-18 13:54:32

标签: c variable-initialization incomplete-type

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

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

2 个答案:

答案 0 :(得分:3)

您尚未定义struct tokens。您已将未命名的structtypedef同时定义为类型名称tokens

如果您已定义

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

然后你可以将你的常量声明为

const struct tokens_ TOKENS_DFLT = { ... };

或者

const tokens TOKENS_DFLT = { ... };

原来,你在两个凳子之间。

答案 1 :(得分:2)

此:

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

应该是:

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

由于您已将名称tokens定义为struct tokens