21

クロス プラットフォームの C++ コードを記述する方法は、次のようにクラスを定義することだと聞きました (たとえば、ウィンドウ クラス)。

window.h
window_win32.cpp
window_linux.cpp
window_osx.cpp

それに応じて実装ファイルを選択します。しかし、os に関連するそのクラスのメンバーがいる場合はどうなるでしょうか? HWNDWin32 実装のメンバーのように。または、たとえばLinuxでコンパイルしようとすると、コンパイルエラーがwindow.h発生します。

私はそれをする必要が#ifdefありますか?私はすでに同様の質問をしましたが、これはこの特定の問題に焦点を当てています。

4

5 に答える 5

0

ほとんどの場合、ヘッダーではそのようなことを避けます。ただし、それらを公開したい場合もあります。そのような場合、私の解決策は常に次のようなものを使用することでした:

#include dependentInclude(syst,MyInclude.lhh)

dependentInclude は、(コマンド ラインで設定された) syst の値に応じて、必要なファイルのパスに展開されるマクロです。

于 2013-08-14T18:07:40.253 に答える