該如何包裝"Handle"類型的資源?

在C++的世界裡,我認為RAII是普世的認知,所以會將資源包裝起來。

#include < windows.h >

struct HandleTraits final {
	static HANDLE invalid() noexcept;

	static void close(HANDLE value) noexcept;
};

using WinHandle = UniqueHandle;
這方法看似乎很完美,但是include一個巨大的windows.h,這會導致整個專案編譯時間過長。 目前我已知的兩種解決方式:
  1. 將你使用到Windows.h的類型複製到你的實作檔(.cpp)。
  2. 使用LoadLibrary載入你要的函數(這樣的方式也只有函數的部分而已)。
  3. 使用void*替代任何HANDLE類型,然後在使用的時候強制轉型。

留言

這個網誌中的熱門文章

升級電腦

[心血來潮的介紹] 在我心中滿分自動筆 STAEDTLER 925 25

使用spdlog的時候win32平台如何加速編譯?