コンパイラを識別するための定義済みシンボル
|
Pascal コンパイラの バージョン識別子です。
http://3932.rapidforum.com/topic=100288647371
http://www.adug.org.au/Reference/VersionSymbols.htm
http://www.blong.com/Tips/KylixTips.htm
及び[Delphi-ML:67458]より。
Compiler Symbol System Symbol BCB?
Turbo Pascal 4 Ver40 DOS -
Turbo Pascal 5.0 Ver50 DOS -
Turbo Pascal 5.5 Ver55 DOS -
Turbo Pascal 6.0 Ver60 DOS -
Turbo Pascal for Win 1.0 Ver10 Win16 ???
Turbo Pascal for Win 1.5 Ver15 Win16 ???
Borland Pascal 7 Ver70 ??? ???
Delphi 1.0 Ver80 Win16 Windows
Delphi 2.0x Ver90 Win32 Win32
C++ Builder 1 Ver93 Win32 Win32 BCB
Delphi 3 Ver100 Win32 Win32
C++ Builder 3 Ver110 Win32 Win32 BCB
Delphi 4 Ver120 Win32 Win32
C++ Builder 4 Ver125 Win32 Win32 BCB
Delphi 5 Ver130 Win32 Win32
C++ Builder 5 Ver130 Win32 Win32 BCB
Kylix1 Ver140 Linux LINUX
Delphi 6 Ver140 Win32 Win32
C++ Builder 6 Ver140 Win32 Win32 BCB
Kylix2 Ver140 Linux LINUX
その他、CPU386、LINUX32、POSIX(32)、PIC、ELF なども状況により利用可能です。
また、Kylix からは不等号を使った条件分岐ができます。
条件コンパイルするには、[Delphi-ML:67458], [Delphi-ML:67474], [Delphi-ML:67489] を参考にして、
{$IFDEF VER80} {Delphi1} {$ENDIF}
{$IFDEF VER90} {Delphi2} {$ENDIF}
{$IFDEF VER93} {Builder1} {$ENDIF}
{$IFDEF VER100} {Delphi3} {$ENDIF}
{$IFDEF VER110} {Builder3} {$ENDIF}
{$IFDEF VER120} {Delphi4} {$ENDIF}
{$IFDEF VER125} {Builder4} {$ENDIF}
{$IFDEF VER130}
{$IFDEF BCB} {Builder5}
{$ELSE} {Delphi5} {$ENDIF}
{$ENDIF}
{$IFDEF CONDITIONALEXPRESSIONS}
// Kylix1 以上は RTLVersion を持っているので
{$IF RTLVersion < 14.20 - 0.001}
// こういう形で処理できる
// "- 0.001" の部分は2進小数と10進小数との変換誤差を
// 吸収するためのダミー定数 → [Delphi-ML:67489] を参照
{$IFEND}
{$IF Declared(CompilerVersion)}
// Delphi6 以上では CompilerVersion も利用可能
{$IF CompilerVersion < 14.10 - 0.001}
// Kylix1 から Builder6 までに対する処理
{$IFEND}
{$IFEND}
{$ENDIF}
などとします。
ちなみに、中村さんの [Delphi-ML:67486] によれば、
RTLVersion CompilerVersion
Kylix1 14.00 なし
Delphi6 14.10 14.01
Delphi6 Update Pack 1 14.11 14.01
Delphi6 Update Pack 2 14.20 14.01
C++Builder6 14.20 14.01
Kylix 2 14.20 14.10
とのことですが、Nobuyuki Nakashima さんの [Delphi-ML:67489] によれば、2進小数と10進小数との変換誤差で、上記の値ぴったりにはなりません。コード例のように、誤差を考慮した対処が必要です。
http://www.delphianworld.com/direct.html?id=MI0062
のようなインクルードファイルを用意すると楽ができます。 |
|