コンパイラのインストールファイルの中のiostream.hの
ようなヘッダファイルには、OSのバージョンによって例えば
#if (WINVER < 0x0500)
のような切り分けがされています。

Win98でコンパイルすればWin98用の実行ファイルが作られ、
WinXPでコンパイルすればWinXP用の実行ファイルが作られるわけで、その切り分けはコンパイル時に使われるもので
実行ファイルにその切り分けルーチンが含まれ、実行ファイルが実行された時に動的にOS別の切り替えがされるわけではないんですよね?

A 回答 (1件)

>実行ファイルが実行された時に動的にOS別の切り替えがされるわけではないんですよね?


そうです。あくまで#ifはプリプロセッサでコンパイル時に
条件判定しているだけで、実行ファイルとはなんの関係もありません。
普通windowsの場合xpでコンパイルしても
98で動作します。勿論xp専用のAPIとかは
使えませんしUNICODE系の関数とかは避けたほうが
良いです。

ところで何のコンパイラを使っているんでしょう?
VC++2003のiostreamもBCC5.5.1のiostream.h
をみましたがWINVARの定義をみているところはありませんでしたが。
動的に切り替えたいなら
if ( )
です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/12 16:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報