有可能吗?
typedef struct {
listLink *next;
listLink *prev;
void *data;
} listLink;
答案 0 :(得分:6)
是的,使用此语法
struct list {
int value;
struct list *next;
};
或
typedef struct list
{
int value;
struct list *next;
} list;
答案 1 :(得分:3)
是的,但是typedef直到语句的后面才会发生,所以你需要给struct本身一个名字。 E.g。
struct listLink {
struct listLink *next;
struct listLink *prev;
void *data;
};
如果您不想将每个实例声明为struct listLink <whatever>
,则可以将其包装在typedef中。
答案 2 :(得分:0)
这可能与os osxx给定语法。另外,这称为链接列表:http://www.ehow.com/how_2056292_create-linked-list-c.html
选择一个名称,然后使用typedef进行定义。每个链表都需要一个结构,即使它只有一个变量:
typedef struct product_data PRODUCT_DATA;
定义结构。最后一个元素应该是指向您刚定义的类型的指针,并命名为“next”:
struct product_data {
int product_code;
int product_size;
PRODUCT_DATA *next;
};
答案 3 :(得分:0)
我更喜欢这个版本:
typedef struct listLink listLink ;
struct listLink{
listLink *next;
listLink *prev;
void *data;
} ;
它清楚地将结构与成员和变量分开。
对struct和typedef struct listLink, listLink
使用相同的名称不是问题,因为它们具有单独的名称空间。