標準条件シンボル
Delphiで予め定義済のシンボルを標準条件シンボル(standard conditional symbols)と呼び、以下のようなものがあります。
- VER<nnn>
- コンパイラバージョン
- RTLVersion<nnnn>
- ランタイムマイナーバージョン(仮)(Delphi 10.4.2以降)
- DCC
- (全ての環境で定義)
- CONSOLE
- コンソールアプリケーション
- NATIVECODE
- ネイティブコード(Delphi.net以降の.NET環境以外で定義)
- MSWINDOWS
- Windows(Kylix/macOS/iOS/Android/Linux以外で定義)
- WIN32
- Windows x86環境で定義(Delphi 6以降)
- WIN64
- Windows x64環境で定義(Delphi XE2以降)
- MACOS
- MacOS環境で定義(Delphi XE2以降)
- MACOS32
- MacOS 32bit環境で定義(Delphi XE2以降)
- MACOS64
- MacOS 64bit環境で定義(Delphi XE8以降)
- OSX
- OSX(MacOS)環境で定義(Delphi 11以降)
- OSX64
- OSX(MacOS)環境で定義(Delphi 11以降)
- POSIX
- MacOSを含むPOSIX環境で定義(Kykix/Delphi XE2以降)
- POSIX32
- MacOSを含むPOSIX 32bit環境で定義(Kykix/Delphi XE2以降)
- POSIX64
- MacOSを含むPOSIX 64bit環境で定義(Delphi XE2以降)
- IOS
- iOS(デバイス/シミュレータ)環境で定義(Delphi XE4以降)
- IOS32
- iOS 32bit環境で定義(Delphi XE8以降)
- IOS64
- iOS 64bit環境で定義(Delphi XE8以降)
- LINUX
- Linux環境で定義(Kylix/Delphi 10.2以降)
- LINUX32
- Linux 32bit環境で定義(Kylix/Delphi 10.2以降)
- LINUX64
- Linux 64bit環境で定義(Delphi 10.2以降)
- ANDROID
- Android環境で定義(Delphi XE5以降)
- ANDROID32
- Android 32bit環境で定義(Delphi XE8以降)
- ANDROID64
- Android 64bit環境で定義(Delphi 10.3.3以降)
- CLR
- .NET環境で定義
- CPU386
- i386以降のCPU
- CPUX86
- x86のCPU(Delphi XE2以降)
- CPUX64
- x64のCPU(Delphi XE2以降)
- CPUXARM
- ARMのCPU(Delphi XE4以降)
- CPUARM32
- 32bit版ARMのCPU(Delphi XE8以降)
- CPUARM64
- 64bit版ARMのCPU(Delphi XE8以降)
- CPU32BITS
- 32bitのCPU(Delphi XE8以降)
- CPU64BITS
- 64bitのCPU(Delphi XE8以降)
- ASSEMBLER
- アセンブラ構文(asm)を使用できるかどうか
- UNICODE
- Unicode環境で定義(Delphi 2009以降)
- CONDITIONALEXPRESSIONS
- 条件評価($IF指令)を使用できるかどうか
- ALIGN_STACK
- OS Xコンパイラやその他の(Linux)コンパイラなどの厳密なスタックアライメント要求がない環境で定義(Delphi XE2以降)
- PC_MAPPED_EXCEPTIONS
- 例外の巻き戻しにアドレスマップを使用するプラットフォーム用コンパイラで定義(Delphi XE2以降)
- PIC
- OS XのようにPIC(位置独立コード)が要求されるプラットフォームで定義(Delphi XE2以降)
- AUTOREFCOUNT
- ARC(Automatic Reference Counting)をサポートする環境で定義(Delphi XE4以降、Delphi 10.4 Sydneyですべてのコンパイラが未定義に)
- EXTERNALLINKER
- 外部リンカを使用する環境で定義(Delphi XE4以降)
- NEXTGEN
- (LLVMベースの)"NEXTGEN"コンパイラで定義(Delphi XE4以降、Delphi 10.4 Sydneyですべてのコンパイラが未定義に)
- ELF
- 実行/オブジェクトファイルがELF形式の環境で定義(Delphi 10.2以降)
- UNDERSCOREIMPORTNAME
- インポートされた名前が"_"(アンダースコア)付きになる環境で定義(Delphi XE4以降)
- WEAKREF
- 弱い参照(weak reference)が有効な環境で定義(Delphi XE4以降)
- WEAKINSTREF
- 弱い参照がインスタンスに定義される環境で定義(Delphi XE4以降、Delphi 10.4 Sydneyですべてのコンパイラが未定義に)
- WEAKINTREF
- 弱い参照がインタフェースに定義される環境で定義(Delphi XE4以降)
- FRAMEWORK_VCL
- プロジェクトがVCLフレームワークを使用(Delphi 11.1以降)
- FRAMEWORK_FMX
- プロジェクトがFMXフレームワークを使用(Delphi 11.1以降)
- WEAK_NATIVEINT
- NativeInt/NativeUIntが型エイリアスの環境で定義(Delphi 12)
- BCB
- C++Builderで定義
- WINDOWS
- Win16環境で定義
ヘルプにはCPU32BITS/CPU64BITSはDelphi XE2以降との記述がありますが、実際にはDelphi XE8以降で有効です。
またVER
<nnn>はそれぞれ以下のプロダクトで定義されています(VER180はDelphi/C++Builder 2006と2007の両方で定義済、VER185はDelphi/C++Builder 2007のみで定義済)。
- VER40
- Turbo Pascal 4.0
- VER50
- Turbo Pascal 5.0
- VER55
- Turbo Pascal 5.5
- VER60
- Turbo Pascal 6.0
- VER10
- Turbo Pascal for Windows 1.0
- VER15
- Turbo Pascal for Windows 1.5
- VER70
- Borland Pascal 7.0
- VER80
- Delphi 1
- VER90
- Delphi 2
- VER93
- C++Builder 1
- VER100
- Delphi 3
- VER110
- C++Builder 3
- VER120
- Delphi 4
- VER125
- C++Builder 4
- VER130
- Delphi 5, C++Builder 5
- VER140
- Delphi 6, C++Builder 6, Kylix 1, Kylix 2, Kylix 3
- VER150
- Delphi 7, 7.1
- VER160
- Delphi 8 for .NET, C#Builder
- VER170
- Delphi 2005, C++Builder 2005 (Ver9)
- VER180
- Delphi 2006, C++Builder 2006 (Ver10), Delphi 2007, C++Builder 2007 (Ver11)
- VER185
- Delphi 2007, C++Builder 2007 (Ver11)
- VER190
- Delphi 2007 for .NET (Ver11)
- VER200
- Delphi 2009, C++Builder 2009 (Ver12)
- VER210
- Delphi 2010, C++Builder 2010 (Ver14)
- VER220
- Delphi XE, C++Builder XE (Ver15)
- VER230
- Delphi XE2, C++Builder XE2 (Ver16)
- VER240
- Delphi XE3, C++Builder XE3 (Ver17)
- VER250
- Delphi XE4, C++Builder XE4 (Ver18)
- VER260
- Delphi XE5, C++Builder XE5, Appmethod 1.13 (Ver19)
- VER265
- Appmethod 1.13 (Ver19.5)
- VER270
- Delphi XE6, C++Builder XE6, Appmethod 1.14 (Ver20)
- VER280
- Delphi XE7, C++Builder XE7, Appmethod 1.15 (Ver21)
- VER290
- Delphi XE8, C++Builder XE8, Appmethod 1.16 (Ver22)
- VER300
- Delphi 10 Seattle, C++Builder 10 Seattle (Ver23)
- VER310
- Delphi 10.1 Berlin, C++Builder 10.1 Berlin (Ver24)
- VER320
- Delphi 10.2 Tokyo, C++Builder 10.2 Tokyo (Ver25)
- VER330
- Delphi 10.3 Rio, C++Builder 10.3 Rio (Ver26)
- VER340
- Delphi 10.4 Sydney, C++Builder 10.4 Sydney (Ver27)
- VER350
- Delphi 11 Alexandria, C++Builder 11 Alexandria (Ver28)
- VER360
- Delphi 12 Athens, C++Builder 12 Athens (Ver29)
RTLVersion
<nnn(n)>はDelphi 10.4.2で導入されました。
- RTLVersion1041
- Delphi 10.4.2
- RTLVersion1042
- Delphi 10.4.2
- RTLVersion111
- Delphi 11.1
- RTLVersion112
- Delphi 11.2
- RTLVersion113
- Delphi 11.3
- RTLVersion121
- Delphi 12.1
ねた元は
Delphi Tips - 0086とか
Delphi Compiler Version Directives: {$IFDEF VER180}とか多数。
もうちょっとヘルプが親切ならなぁ。オンラインヘルプの
条件付きコンパイル(Delphi) (
en)および
コンパイラ バージョン (
en)に完全な定義が掲載されました。素晴らしい。
2008/12/23追記:
Borland Compiler Conditional Defines - Delphiを参考にちょこちょこっと修正。
2009/09/02追記: Delphi/C++Builder 2010のVER210を追加。
2010/10/12追記: Delphi/C++Builder XEのVER220を追加。
2011/09/02追記: Delphi/C++Builder XE2関係を追加。
2012/09/02追記: Delphi/C++Builder XE3のVER240を追加。
2013/04/20追記: Delphi/C++Builder XE4のVER250/iOS/CPUARM/AUTOREFCOUNT/EXTERNAL_LINKER/NEXTGEN/UNDERSCOREIMPORTNAME/WEAKREF/WEAKINSTREF/WEAKINTREFを追加。
2013/09/12追記: Delphi/C++Builder XE5のVER260/Androidを追加。
2014/04/15追記: Appmethod 1のVER265とDelphi/C++Builder XE6のVER270を追加。
2014/09/02追記: Delphi/C++Builder XE7のVER280を追加。
2015/04/07追記: Delphi/C++Builder XE8のVER290を追加。
2015/09/01追記: Delphi/C++Builder 10 SeattleのVER300を追加。
2015/11/16追記: Delphi/C++Builder XE8以降のCPU32BITS/CPU64BITSを追加。
2016/04/20追記: Delphi/C++Builder 10.1 BerlinのVER310を追加。
2016/08/19追記:
Compiler Versionsを参考に微妙に修正。
2017/03/23追記: Delphi/C++Builder 10.2 TokyoのVER320を追加。
2018/11/22追記: いくつかの標準条件シンボルが欠けていたのを修正。
2018/11/26追記: Delphi/C++Builder 10.3 RioのVER330を追加。
2020/06/01追記: Delphi/C++Builder 10.3.3 RioのANDROID64とDelphi/C++Builder 10.4 SydneyのVER340を追加。
2021/05/05追記: Delphi/C++Builder 10.4.2以降のRTLVersion
<nnnn>(RTLVersion1041、RTLVersion1042)を追加。
2021/09/10追記: Delphi/C++Builder 11 AlexandriaのVER350とOSX/OSX64を追加。
2022/03/16追記: Delphi/C++Builder 11.1 AlexandriaのRTLVersion111とFRAMEWORK_VCL、FRAMEWORK_FMXを追加。
2022/09/13追記: Delphi/C++Builder 11.2 AlexandriaのRTLVersion112を追加。
2023/03/07追記: Delphi/C++Builder 11.3 AlexandriaのRTLVersion113を追加。
2023/11/09追記: Delphi/C++Builder 12 AthensのVER360を追加。
2023/11/24追記: Delphi/C++Builder 12 AthensのWEAK_NATIVEINTを追加。
2024/04/05追記: Delphi/C++Builder 12.1 AthensのRTLVersion121を追加。