[英]Is there a preprocessor macro to prevent others include a private header in C++?
我有一個 private.hpp header 應該只用於 2 個類,這個 header 執行這些類使用的一些操作,但是,我團隊的其他軟件工程師開始在同一個模塊中使用它,我必須修復這些包含和為這些類添加更多方法。 我想知道是否有辦法從預處理器中拋出錯誤,或者可能是 linker 以停止使用這兩個類中的 header。
正如@SM 提到的,您可以在需要您的文件中定義預處理器變量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
,這意味着他們知道他們不應該這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.