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

问题描述 投票:3回答:1

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

#include<a.h> // Ok

#include<b.h> // OK

#include<a.h>
#include<b.h> // compile error 
c++
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.