在我看来,C 中反对多次声明结构成员的规则似乎是需要包含守卫的主要原因。如果我们在“header.h”中有以下内容:
struct s {
int a;
char b;
};
和文件“ah”#include 的 header.h,那么我们不能同时包含“ah”和“header.h”,因为 struct s 被定义了两次。
我的问题是,这样做有什么问题?为什么不允许多个相同的结构定义?这将消除对包含保护的需求,并大量清理 C 头文件。
C 中的规则是允许多个声明,但只能定义一个。由于某种原因,指定结构的成员称为“定义”,即使它没有定义变量或函数。