我有一个只能用于 2 个类的 private.hpp header ,这个 header 执行那些类使用的一些操作,但是,我团队的其他软件工程师开始在同一个模块中使用它,我不得不修复这些包括并向这些类添加更多方法。我想知道是否有办法从预处理器或链接器中抛出错误以停止使用这两个类中的 header 。
最佳答案
作为@S.M.提到,您可以在需要 secret.hpp
的文件中定义预处理器变量:
#define INTERNAL_OPERATIONS_ALLOWED // top of file
#include "secret.hpp"
// ...
#undef INTERNAL_OPERATIONS_ALLOWED // end of file
并在您的 private.hpp
之上添加一个条件:
#if !defined(INTERNAL_OPERATIONS_ALLOWED)
#error "DO NOT USE THIS HEADER"
#endif
// ...
或单独定义您的宏:
#ifdef INTERNAL_OPERATIONS_ALLOWED
#define OPERATION(X) X
#else
#error "DO NOT USE THIS OPERATION"
#endif
这不会阻止其他开发人员使用您的操作,但他们必须有意定义 INTERNAL_OPERATIONS_ALLOWED
,这意味着他们知道他们不应该这样做。
关于c++ - 是否有预处理器宏来防止其他人在 C++ 中包含私有(private) header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66616002/