代码之家  ›  专栏  ›  技术社区  ›  Richard J. Ross III

C变量的初始值设定项不完整

  •  0
  • Richard J. Ross III  · 技术社区  · 15 年前

    我试图用默认值构造一个结构,如下所述: 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 回复  |  直到 9 年前
        1
  •  3
  •   walkytalky    15 年前

    你还没有定义 struct tokens . 你定义了一个未命名的 struct 同时 typedef -按类型名称编辑 tokens .

    如果你已经定义了

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

    然后你可以声明你的常数为 任何一个 :

    const struct tokens_ TOKENS_DFLT = { ... };
    

    或者

    const tokens TOKENS_DFLT = { ... };
    

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

        2
  •  2
  •   unwind    15 年前

    这:

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

    应该是:

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

    既然你定义了名字 tokens 意思是 struct tokens .

    推荐文章