如何实现头文件互斥包含?

时间:2019-04-24 10:09:31

标签: c++

假设我有两个标头:a.hb.h
我要在项目中做的是只允许其中之一。
如果a.hb.h都包含在源文件中,则可能会发生编译错误。
我应该在标题中添加些什么来实现此目的?

#include<a.h> // Ok

#include<b.h> // OK

#include<a.h>
#include<b.h> // compile error 

1 个答案:

答案 0 :(得分:7)

  

如果源文件中同时包含a.hb.h,则可能会发生编译错误。
  我应该在标题中添加些什么来实现此目的?

您可以使用预处理程序引用标头后卫来执行以下操作:

a.h

 #ifndef A_H
 #define A_H
 #ifdef B_H
 #error "You cannot use a.h in combination with b.h"
 #endif

 // ...

 #endif

b.h

 #ifndef B_H
 #define B_H
 #ifdef A_H
 #error "You cannot use b.h in combination with a.h"
 #endif

 // ...

 #endif