私は C++ のライブラリに取り組んでおり、その一部は、必要ないくつかの OS 関数の抽象化レイヤーです。Windows API で実装を開始しましたが、#ifdef などを使用して他のプラットフォームのサポートを追加する予定です。
しかし、問題になり始めているのは、Windows.h を含めると、必要のない残りのコード全体に伝播し、特にライブラリであるため、使用する他の人のコードも汚染されることです。それ。Windows API が名前空間またはそのコードを区別する明確な方法を使用したかどうかは気にしませんが、代わりに、small、near、far (小文字) などのかなり一般的な単語を #define し、関数名の多くはまた、かなり一般的です。
したがって、コードのプラットフォーム固有の部分だけがこれらにアクセスでき、それが他の場所に含まれていないことを本当に望んでいます。明らかな解決策は、CPP ファイルに Windows.h のみを含めることですが、プラットフォーム固有のデータ型または構造の一部が次のようなクラス メンバー変数であるため、常に可能であるとは限りません。
class Window {
public:
// ...
private:
HWND handle;
};
これを達成する方法はありますか?
ありがとう。