c++ - 在编译时防止 header 包含在某些文件中?

标签 c++ metaprogramming template-meta-programming compile-time

我有一个头文件,我可以控制它的内容。

此外,我还有一个接口(interface) I1(在其他文件中定义),各种 派生的实现。我想禁止那些实现包括这个 头文件。这样在编译期间,如果包含该文件,编译将失败, 否则它将照常继续。

所以我有头文件和接口(interface)定义(在其他文件中)。我要禁止 在编译期间包含给定头文件的接口(interface)实现。

关于我如何实现这一点有什么建议吗?我可以使用一些巧妙的模板/预处理技巧吗?

最佳答案

在头文件中:

#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

关于c++ - 在编译时防止 header 包含在某些文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18824271/

相关文章:

apache-flex - 在 groovy/grails 中使用元编程拦截服务方法调用

metaprogramming - 如何在 Smalltalk 中以编程方式替换消息正文?

metaprogramming - 处理数组索引宏中的 end 关键字

c++ - 从函数的可变参数构建特定的元组

c++ - 如何在 POCO 中访问 get 变量

C++ getline() 在读取包含\0 的字符串流时表现异常

c++ - 在将几行 ruby​​ 代码转换为 C++ 时需要帮助!

c++ - 无法从类型基类的指针访问派生类方法

c++ - 编译时素数检查

c++ - 如何为具有类型删除数据成员的类实现复制构造函数?