为什么{$IFDEF MSWINDOWS}在Delphi XE5中被{$IF定义(MSWINDOWS)}
在XE5中,所有条件汇编如
{$IFDEF MSWINDOWS} 被替换 {$IF defined(MSWINDOWS)} 例如XE4中的System.Diagnostics.pas ... implementation {$IFDEF MSWINDOWS} uses Winapi.Windows; {$ENDIF} {$IFDEF MACOS} uses Macapi.Mach; {$ENDIF} { TStopwatch } ... 现在在XE5它看起来像: ... implementation {$IF defined(MSWINDOWS)} uses Winapi.Windows; {$ELSEIF defined(MACOS)} uses Macapi.Mach; {$ELSEIF defined(POSIX)} uses Posix.Time; {$ENDIF} { TStopwatch } ... 有什么特别的原因我应该迁移我的类似的调用吗? 解决方法
根据Delphi文档:
http://docwiki.embarcadero.com/RADStudio/XE6/en/Conditional_compilation_%28Delphi%29
{$IFDEF}和{$IFNDEF}只允许您使用{$DEFINE …}之前设置的定义.
const LibVersion = 6; //One constant to define the libversion. {$IF LibVersion >= 10.0} do stuff that covers LibVersion 10,11 and 12 {$ELSEIF Libversion > 5.0} do other stuff that covers LibVersion 6,7,8,9 {$IFEND} 如果你试图用定义做到这一点,你必须这样做 {$DEFINE Lib1} {$DEFINE Lib2} {$DEFINE Lib3} {$DEFINE Lib4} {$DEFINE Lib5} {$DEFINE Lib6} //all previous versions have to be defined. {$IFDEF Lib10} do stuff that covers LibVersion 10,11 and 12 {$ELSE} {$IFDEF Lib6} do stuff that covers LibVersion 6,9 {$ENDIF} {$ENDIF} 这只是一个稍微更高级的处理定义的版本. {$IF ..}指令在Delphi 6中引入. 我猜Embarcadero决定清理代码库. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |