头文件的相互包含

时间:2020-11-25 19:24:39

头文件的相互包含在编译时如果顺序不注意就很容易造成编译错误。

遇到一个头文件,一开始并没有包含其他头文件而是定义了一些枚举,然后再包含另外一个头文件,这样就很类似于:

//  1  //

//  1  //

//  2  //

//  1  //

//  1  //在1头文件中包含2头文件,预处理时就是以这样的形式处理交给编译器,原本的用意是在1头文件的包含2之前的部分定义了一些2头文件需要使用的东西,方便2使用,这种结构就对预处理有一定要求了,需要把1放在前面,如果include的时候是先include2则有部分东西并没定义就会报错,这样就限制了2头文件,他不能单独使用,必须只能通过使用1头文件来包含2。

若在某个c文件中先包含了2再包含1,显然就会报错。

还存在一个问题,就是在2头文件中再包含1,因为编译1的开关已经关闭,所以包含了也没有用。