- ベストアンサー
コンパイルとOS
コンパイラのインストールファイルの中のiostream.hの ようなヘッダファイルには、OSのバージョンによって例えば #if (WINVER < 0x0500) のような切り分けがされています。 Win98でコンパイルすればWin98用の実行ファイルが作られ、 WinXPでコンパイルすればWinXP用の実行ファイルが作られるわけで、その切り分けはコンパイル時に使われるもので 実行ファイルにその切り分けルーチンが含まれ、実行ファイルが実行された時に動的にOS別の切り替えがされるわけではないんですよね?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>実行ファイルが実行された時に動的にOS別の切り替えがされるわけではないんですよね? そうです。あくまで#ifはプリプロセッサでコンパイル時に 条件判定しているだけで、実行ファイルとはなんの関係もありません。 普通windowsの場合xpでコンパイルしても 98で動作します。勿論xp専用のAPIとかは 使えませんしUNICODE系の関数とかは避けたほうが 良いです。 ところで何のコンパイラを使っているんでしょう? VC++2003のiostreamもBCC5.5.1のiostream.h をみましたがWINVARの定義をみているところはありませんでしたが。 動的に切り替えたいなら if ( ) です。
お礼
iostream.hは例で、どのファイルだったか忘れましたが ふと昔の疑問を思い出したので質問しました。 ありがとうびざいました。