typedef struct嵌套指针未定义错误

时间:2014-11-13 04:03:15

标签: c pointers struct linked-list typedef

我使用typedef'ed结构创建一个链表,但是编译器告诉我我的新类型是未定义的。

typedef struct valholder
{
    char* id;
    union
    {
        int ival;
        float fval;
        char* cval;
    };
    valholder* next;
};

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

typedef的语法是:

typedef <type> <alias>

其中<type>是现有类型名称或类型表达式(如struct {...}),<alias>是新类型名称。

这是定义数据结构的一种方法,而不是引用别名:

typedef struct valholder_s {
  char* id;
  union {
     int ival;
     float fval;
     char* cval;
  };
  struct valholder_s* next;
} valholder;

答案 1 :(得分:1)

试试这个:

   typedef struct valholder
    {
        char* id;
        union
        {
            int ival;
            float fval;
            char* cval;
        };
        struct valholder* next;
    } valholder;