C中反对声明一个结构成员的规则似乎是我必须包含守卫的主要原因。如果我们有在“header.h”以下内容:为什么不允许多次定义一个C结构的成员?
struct s {
int a;
char b;
};
和文件“啊”#包括的header.h,那么我们不能包括“啊”和“header.h”是那么的struct是定义两次。
我的问题是,这样做的问题是什么?为什么不能允许多个相同的结构定义被允许?这将消除对包含警卫的需求,并且极大地清理C头文件。
C中的规则是允许多个声明,但只有一个定义。出于某种原因,指定结构体的成员称为“定义”,尽管它没有定义变量或函数。
然而,你*是*,当你指定成员时定义'struct'的结构。 – 2012-04-25 17:16:23
删除包含警卫不会“清理”任何东西。它只会使编译速度变慢,因为编译器会重复读取并重新解析相同的头文件。 – 2012-04-25 17:52:14