为什么“typedef struct anything_at_all boom;”编译没有错误?

时间:2017-11-15 14:55:11

标签: c

为什么

//The type anything_at_all exists nowhere.
typedef struct anything_at_all lol;

编译没有错误,而

//The type anything_at_all_2 exists nowhere.
typedef anything_at_all_2 rofl;

产生错误?

结构有什么特别之处?在某种程度上,我很高兴它能像这样工作,因为它允许我们创建不透明的结构。但是理解为什么它的作用会很好。

1 个答案:

答案 0 :(得分:-1)

您可以声明struct而无需定义它。这称为前向声明。它允许你做这样的事情:

struct s1;

struct s2 {
    int x;
    struct s1 *p;
};

struct s1 {
    int y;
    struct s2 *p;
};