• ベストアンサー

コンパイルとOS

コンパイラのインストールファイルの中のiostream.hの ようなヘッダファイルには、OSのバージョンによって例えば #if (WINVER < 0x0500) のような切り分けがされています。 Win98でコンパイルすればWin98用の実行ファイルが作られ、 WinXPでコンパイルすればWinXP用の実行ファイルが作られるわけで、その切り分けはコンパイル時に使われるもので 実行ファイルにその切り分けルーチンが含まれ、実行ファイルが実行された時に動的にOS別の切り替えがされるわけではないんですよね?

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

>実行ファイルが実行された時に動的にOS別の切り替えがされるわけではないんですよね? そうです。あくまで#ifはプリプロセッサでコンパイル時に 条件判定しているだけで、実行ファイルとはなんの関係もありません。 普通windowsの場合xpでコンパイルしても 98で動作します。勿論xp専用のAPIとかは 使えませんしUNICODE系の関数とかは避けたほうが 良いです。 ところで何のコンパイラを使っているんでしょう? VC++2003のiostreamもBCC5.5.1のiostream.h をみましたがWINVARの定義をみているところはありませんでしたが。 動的に切り替えたいなら if ( ) です。

muenos
質問者

お礼

iostream.hは例で、どのファイルだったか忘れましたが ふと昔の疑問を思い出したので質問しました。 ありがとうびざいました。

関連するQ&A