簡體   English   中英

是否有預處理器宏來防止其他人在 C++ 中包含私有 header?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM