0

Solaris から Windows Visual Studio にコードを移植しています。コードを両方と互換性を持たせるために、#if defined (Win32) や #ifdef(OSTYPE_solaris) などのステートメントを使用しています。Win32 が定義されている場所は見つかりましたが、OSTYPE_solaris が定義されている場所が見つかりません。Visual Studios で探しているのと、OSTYPE_solaris を定義するヘッダーが Visual Studios で利用できないため、定義が見つからない可能性があると考えています。私はその仮定で正しいですか?もしそうなら、誰でも OSTYPE_solaris が定義されている場所を知っていますか? 少しグーグルで検索しましたが、この質問でうまくいきませんでした。OSTYPE_linux でも同じ問題を抱えています。

4

1 に答える 1

0

私の推測では、それらはコンパイラー自体によって定義されています。Solaris が gcc をコンパイラとして使用している場合、次のようにコンパイラで定義された変数を確認できます。

エコー "" | gcc -E -dM -

しかし、ほとんどの場合、プラットフォームごとに ifdef するべきではないと思います。HAVE_SOCKET_H のような機能ベースの定義を使用することをお勧めします。ただし、これらの定義を提供するマルチプラットフォーム ビルド システムではさらに多くの作業が必要であり、必要ない場合もあります。

于 2012-07-30T16:00:48.737 に答える