Delphi编译器版本对照表及工具链

目录

Delphi编译器版本对照表及工具链

1、Delphi编译器版本历史对照表

2、Delphi工具链(Delphi编译器)

3、Delphi条件编译

3.1、预定义条件符号:

3.2、对编译器版本的条件定义:

3.3、预定义常量:


Delphi编译器版本对照表及工具链

1、Delphi编译器版本历史对照表

下表列出了与每个Delphi编译器相关的版本号,从Turbo Pascal 4.0开始,到编译器的当前版本结束:

Delphi conditional VER<nnn>ProductProduct VersionPackage VersionCompilerVersion
VER350Delphi 11 Alexandria/ C++Builder 11 Alexandria2828035.0
VER340Delphi 10.4 Sydney / C++Builder 10.4 Sydney2727034.0
VER330Delphi 10.3 Rio / C++Builder 10.3 Rio2626033.0
VER320Delphi 10.2 Tokyo / C++Builder 10.2 Tokyo2525032.0
VER310Delphi 10.1 Berlin / C++Builder 10.1 Berlin2424031.0
VER300Delphi 10 Seattle / C++Builder 10 Seattle2323030.0
VER290Delphi XE8 / C++Builder XE82222029.0
VER280Delphi XE7 / C++Builder XE72121028.0
VER270Delphi XE6 / C++Builder XE62020027.0
VER260Delphi XE5 / C++Builder XE51919026.0
VER250Delphi XE4 / C++Builder XE41818025.0
VER240Delphi XE3 / C++Builder XE31717024.0
VER230Delphi XE2 / C++Builder XE216

160161 is the version for the five FireMonkey packages

at XE2 Update 2: fmi161.bpl, fmx161.bpl, fmxase161.bpl,

fmxdae161.bpl, and fmxobj161.bpl.

23.0
VER220Delphi XE / C++Builder XE1515022.0
VER210Delphi 2010 / C++Builder 20101414021.0
VER200Delphi 2009 / C++Builder 20091212020.0
VER190Delphi 2007 for .Net [1]1111019.0
VER180 or VER185Delphi 2007 / C++Builder 2007 for Win32 [1]1111018.5
VER180Delphi 2006 / C++Builder 20061010018.0
VER170Delphi 200599017.0
VER160Delphi 8 for .Net88016.0
VER150Delphi 7 (and 7.1)77015.0
VER140Delphi 6 / C++Builder 666014.0
VER130Delphi 5 / C++Builder 55NANA
VER125C++Builder 44NANA
VER120Delphi 44NANA
VER110C++Builder 33NANA
VER100Delphi 33NANA
VER93C++Builder 1NANANA
VER90Delphi 22NANA
VER80Delphi 11NANA
VER70Borland Pascal 7.0NANANA
VER15Turbo Pascal for Windows 1.5NANANA
VER10Turbo Pascal for Windows 1.0NANANA
VER60Turbo Pascal 6.0NANANA
VER55Turbo Pascal 5.5NANANA
VER50Turbo Pascal 5.0NANANA
VER40Turbo Pascal 4.0NANANA

Delphi 2007定义了两个VERxxx符号(VER180和VER185)。Delphi 2006和2007是二进制兼容的,因此两者均可使用180。如果仅需要2007,请使用VER185。

注意: CompilerVersion最初是随Delphi 6引入的,因此较早的版本没有CompilerVersion常量。

http://docwiki.embarcadero.com/RADStudio/Sydney/en/Compiler_Versions

2、Delphi工具链(Delphi编译器)

Platform(平台)Compiler(编译器)

32-bit Windows

DCC32

64-bit Windows

DCC64

64-bit iOS

DCCIOSARM64 (LLVM)

iOS Simulator

DCCIOS32

Android

DCCAARM (LLVM)

Linux

DCCLINUX64

http://docwiki.embarcadero.com/RADStudio/Sydney/en/Delphi_Toolchains

3、Delphi条件编译

        您可以通过以下方式定义条件:

  • 使用{$DEFINE}伪指令将指定的符号设置为True,并将{$UNDEF}伪指令设置为False
  • 将此-D开关与命令行编译器一起使用(所有Delphi编译器均支持此选项)。
  • 将符号添加到“项目”>“选项”>“ Delphi编译器”页面上的“条件定义”字段中。

        有条件的指令{$IFDEF}{$IFNDEF}{$IF}{$ELSEIF}{$ELSE}{$ENDIF},并{$IFEND}允许您根据条件符号的状态,编译或抑制代码。{$IF}{$ELSEIF}允许您基于声明的Delphi标识符进行条件编译。{$ IFOPT}根据是否启用了指定的编译器开关来编译或抑制代码。

3.1、预定义条件符号:

CategorySymbolDCC32  DCC64  
  Since XE2  
  DCCOSX  
  Since XE2  
  DCCOSX64  
  Since 10.3 Rio Release 2  
  DCCIOSARM  
  Since XE3  
  DCCIOS32  
  Since XE3  
  DCCAARM  
In XE5
  DCCIOSARM64  
  Since XE8  
  DCCLINUX64  
  Since 10.2 Tokyo  
  DCCAARM64  
  Since 10.3 Rio Release 3  
Comments
CompilerDCCDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINED
VER340
For a list of compiler versions, see Compiler Versions.
DEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDFor Delphi Sydney, compiler version 34.0 has VER340 defined.
PlatformCONSOLEDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDefined if an application is being compiled as a console application.
IOSnot definednot definednot definednot definedDEFINEDDEFINEDN/ADEFINEDnot definednot definedDefined if the target platform is iOS.
*New* in XE4/iOS.
IOS32not definednot definednot definednot definedDEFINEDDEFINEDnot definednot definednot definednot definedDefined if the target platform is iOS32.
Since XE8/iOSarm64.
IOS64not definednot definednot definednot definednot definednot definednot definedDEFINEDnot definednot definedDefined if the target platform is iOS64.
Since XE8/iOSarm64.
NATIVECODEDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDSince Delphi.Net
MSWINDOWSDEFINEDDEFINEDnot definednot definednot definednot definednot definednot definednot definednot definedIndicates that the operating environment is Windows. Use MSWINDOWS to test for any flavor of the Windows platform instead of WIN32.
WIN32DEFINEDnot definednot definednot definednot definednot definednot definednot definednot definednot definedTarget platform is the native 32-bit Windows platform.
WIN64not definedDEFINEDnot definednot definednot definednot definednot definednot definednot definednot definedTarget platform is 64-bit Windows.
*New* in XE2/x64.
MACOSnot definednot definedDEFINEDDEFINEDDEFINEDDEFINEDnot definedDEFINEDnot definednot definedTarget platform is macOS.
*New* in XE2/macOS.
MACOS32not definednot definedDEFINEDnot definedDEFINEDDEFINEDnot definednot definednot definednot definedTarget platform is 32-bit macOS.
*New* in XE2/macOS.
MACOS64not definednot definednot definedDEFINEDnot definednot definednot definedDEFINEDnot definednot definedTarget platform is 64-bit macOS.
*New* in XE8/macOS.
LINUXnot definednot definednot definednot definednot definednot definednot definednot definedDEFINEDnot definedSince Kylix.
LINUX32not definednot definednot definednot definednot definednot definednot definednot definednot definednot definedSince Kylix.
LINUX64not definednot definednot definednot definednot definednot definednot definednot definedDEFINEDnot definedNew in 10.2
POSIXnot definednot definedDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDSince Kylix.
POSIX32not definednot definedDEFINEDnot definedDEFINEDDEFINEDDEFINEDDEFINEDnot definednot definedSince Kylix.
POSIX64not definednot definednot definedDEFINEDnot definednot definednot definedDEFINEDDEFINEDDEFINEDSince Kylix.
ANDROIDnot definednot definednot definednot definednot definednot definedDEFINEDnot definednot definedDEFINEDDefined if the target platform is Android.
*New* in XE5.
ANDROID32not definednot definednot definednot definednot definednot definedDEFINEDnot definednot definednot definedSince XE8/iOSarm64.
ANDROID64not definednot definednot definednot definednot definednot definednot definednot definednot definedDEFINEDDelphi compiler for Android 64-bit platform.
*New* in 10.3.3.
CPUCPU386DEFINEDnot definedDEFINEDDEFINEDnot definedDEFINEDnot definednot definednote definednot definedIndicates that the CPU is an Intel 386 or later.
CPUX86DEFINEDnot definedDEFINEDnot definednot definedDEFINEDnot definednot definednot definednot definedCPU is an Intel 386 or later on any platform.
*New* in XE2/x64.
CPUX64not definedDEFINEDnot definedDEFINEDnot definednot definednot definednot definedDEFINEDnot definedThe CPU supports the x86-64 instruction set, and is in a 64-bit environment.
*New* in XE2/x64.
CPU32BITSDEFINEDnot definedDEFINEDnot definedDEFINEDDEFINEDDEFINEDnot definednot definednot definedThe CPU is in a 32-bit environment, such as DCC32.EXE.
*New* in XE8.
CPU64BITSnot definedDEFINEDnot definedDEFINEDnot definednot definednot definedDEFINEDDEFINEDDEFINEDThe CPU is in a 64-bit environment, such as DCC64.EXE.
*New* in XE8.
CPUARMnot definednot definednot definednot definedDEFINEDnot definedDEFINEDDEFINEDnot definedDEFINEDDefined if the CPU is based on the ARM architecture, such as the Delphi mobile compiler for the iOS device (DCCIOSARM.EXE).
*New* in XE4/iOS.
CPUARM32not definednot definednot definednot definedDEFINEDnot definedDEFINEDnot definednot definednot definedThe CPU is in a 32-bit ARM environment, such as DCCIOSARM.EXE.
*New* in XE8.
CPUARM64not definednot definednot definednot definednot definednot definednot definedDEFINEDnot definedDEFINEDThe CPU is in a 64-bit ARM environment, such as DCCIOSARM64.EXE.
*New* in XE8.
Availability
ALIGN_STACKnot definednot definedDEFINEDnot definednot definedDEFINEDnot definednot definednot definednot definedDefined in code that may be shared with the macOS compiler and another compiler on another platform such as Linux that does not have a rigid stack alignment requirement. For more information, see Eli Boling's blog at http://blogs.embarcadero.com/eboling/2009/05/20/5607 .
*New* in XE2/macOS.
ASSEMBLERDEFINEDDEFINEDDEFINEDnot definednot definedDEFINEDnot definednot definednot definednot definedAssembler syntax is accepted.
AUTOREFCOUNT (*)not definednot definednot definedDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINED if 10.2.
Not defined since 10.3.
not definedDefined for compilers that use automatic reference counting, such as the Delphi mobile compilers.
*New* in XE4/iOS. Removed in 10.4 Sydney.
EXTERNALLINKERnot definednot definednot definedDEFINEDDEFINEDnot definedDEFINEDDEFINEDDEFINEDDEFINEDDefined for compilers that have an external linker and the LLVM code generator; the Delphi mobile compilers have the external ld linker and use LLVM as code generator.
*New* in XE4/iOS.
UNICODEDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDUNICODE is defined as the default string type.
CONDITIONALEXPRESSIONSDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDTests for the use of the $IF directive.
ELFnot definednot definednot definednot definednot definednot definednot definednot definedDEFINEDnot definedDefined when targeting Executable and Linkable Format (ELF) files.
NEXTGEN (*)not definednot definednot definedDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINED if 10.2.
Not defined since 10.3.
not definedDefined for compilers (such as the Delphi mobile compilers) that use "next-generation" language features, such as 0-based strings.
*New* in XE4/iOS. Removed in 10.4 Sydney.
PC_MAPPED_EXCEPTIONSnot definednot definedDEFINEDnot definednot definedDEFINEDnot definednot definednot definednot definedDefined when compiling on a platform or for a target platform that uses address maps instead of stack frames to unwind exceptions (such as macOS).
*New* in XE2.
PICneverneveralways DEFINEDalways DEFINEDalways DEFINEDalways DEFINEDalways DEFINEDalways DEFINEDalways DEFINEDalways DEFINEDDefined for platforms that require Position-Independent Code (PIC), such as macOS.
UNDERSCOREIMPORTNAMEDEFINEDnot definedDEFINEDnot definednot definedDEFINEDnot definednot definednot definednot definedDefined for compilers that add a leading underscore (for example, in names of dynamic libraries imported from Mac OS).
*New* in XE4/iOS.
WEAKREFnot definednot definednot definedDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDefined for compilers that can use weak references (the [weak] attribute).
*New* in XE4/iOS.
WEAKINSTREF (*)not definednot definednot definedDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINED if 10.2.
Not defined since 10.3.
not definedDefined when weak references are defined for instances.
*New* in XE4/iOS. Removed in 10.4 Sydney.
WEAKINTFREFnot definednot definednot definedDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDEFINEDDefined when weak references are defined for interfaces.
*New* in XE4/iOS.

3.2、对编译器版本的条件定义:

 {$ IFDEF CONDITIONALEXPRESSIONS} 
    {$ IF CompilerVersion> = 17.0} 
      {$ DEFINE HAS_INLINE} 
    {$ IFEND} 
    {$ IF RTLVersion> = 14.0} 
      {$ DEFINE HAS_ERROUTPUT} 
    {$ IFEND} 
 {$ ENDIF}

3.3、预定义常量:

仅在条件编译器指令(例如{$IF}和)内部接受条件语句{$IFDEF}

有三个重要的常量可用:

  • System.RTLVersion是一个常量,定义为运行时库的版本。对于悉尼,RTLVersion为34。
  • System.CompilerVersion是一个常量,定义为当前Delphi编译器的版本。对于悉尼,CompilerVersion为34。
  • FMX.Types.FireMonkeyVersion是一个常量,定义为当前FireMonkey库的版本。对于悉尼,FireMonkeyVersion为270。

http://docwiki.embarcadero.com/RADStudio/Sydney/en/Conditional_compilation_(Delphi)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专讲冷知识

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值