プリプロセッサで OS と OS のバージョンを確認する方法はありますか?
Solaris 10 とその他の OS を分割したい。
Jan Dvorak が言ったように、これは、ホスト システム (コンパイルしているシステム) を参照しているか、ターゲット システム (アプリケーションを実行するシステム) を参照しているかによって異なります。
後者の場合、プリプロセッサはコンパイル中にのみ実行されますが、この情報はターゲット システムでの実行時にしか利用できないという単純な理由から、必要なことを行う方法はありません。
前者の場合、コンパイラは、コンパイルしているシステムに関する情報を提供する定義済みのマクロを利用できるようにする必要があります。たとえば、Windows で MingW または MSVC を使用してコンパイル_WIN32
する場合、条件付きでコードを含めることができるようにマクロが定義されます。
ただし、コンパイル時に OS のバージョンは通常無関係であるため、これで求める情報が得られる可能性は低いです。必要な情報は、コンパイルしている OS (Windows、Solaris など)、コンパイラのバージョンなどです。
skoyの答えを拡張するために、プログラムがコンパイルされているシステムの情報を確認したい人のために、sourceforgeプロジェクトにwikiページがあり、オペレーティングシステムなどのいくつかの異なるものの最も事前定義されたマクロのリストがあります。アーキテクチャとコンパイラ。