2008年9月4日

標準条件シンボル

標準条件シンボル 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を追加。

0 件のコメント: