我有一个头文件,我可以控制它的内容。
另外,我有一个接口I1(在其他一些文件中定义),各种各样的接口 实现派生。我想禁止这些实现包括这个 头文件。因此,在编译期间,如果包含该文件,编译将失败, 否则会像往常一样继续。
所以我有头文件和接口定义(在其他一些文件中)。我想禁止 在编译期间包含给定头文件的接口实现。
有关如何实现这一目标的任何建议?我可以使用一些聪明的模板/预处理技巧吗?
答案 0 :(得分:9)
在头文件中:
#ifndef FOO_IMPLEMENTATION_USE_ONLY
#error This file is for inclusion in the FOO implementation only
#endif
在应该包含它的文件中:
// Define this ONLY in the Foo implementation files
#define FOO_IMPLEMENTATION_USE_ONLY