C ++ - 关于typedef的问题

时间:2010-10-31 22:22:25

标签: c++

给出以下代码:

typedef struct IntElement
{
    struct IntElement *next; // use struct IntElement
    int         data;
} IntElement;

typedef struct IntElement
{
    IntElement *next; // Use IntElement
    int         data;
} IntElement; // why I can re-use IntElement here?

我使用上面的数据结构来定义链表节点。

  1. 哪个更好?
  2. 为什么我可以使用重复的名称(即typedef结束中的struct IntElement和IntElement)?

2 个答案:

答案 0 :(得分:8)

C ++也不是。第一个声明是旧的C语法。第二个是认识到你在C ++中不需要它然后在一行之后忘记它的人。 C ++就是这样的:

struct IntElement {
    IntElement* next;
    int data;
};

答案 1 :(得分:2)

@ Q1: C ++中的。只需使用

struct IntElement { 
    IntElement *next;
    int data;
};

struct IntElement自动typedefIntElement