通常教導 #include 應放在源文件頂部。但標準並未強制要求,特定場景下在別處包含頭文件具有獨特價值。
#if defined(_WIN32)
#include <windows.h>
#include "win_specific.h"
#elif defined(__linux__)
#include <unistd.h>
#include "linux_specific.h"
#endif
根據編譯目標平台引入不同頭文件,實現跨平台代碼隔離。
將模板類的實現放在 .inl 或 .ipp 文件,在頭文件底部 #include "TemplateImpl.inl"。雖然仍在頭文件內,但邏輯上分離了聲明與定義。
// generated_ids.h 由腳本自動生成
enum class CommandID {
#include "generated_ids.h"
};
利用預處理器包含自動生成的代碼片段,避免手動維護巨大枚舉/表格。
在單元測試編譯單元中,包含被測試類的私有頭文件或內部實現細節:
#define private public
#include "MyClass.h"
#undef private
// 現在可以訪問私有成員進行白盒測試