我想在记录中添加一些类操作符,但我仍然想在旧的Delphi版本下编译代码。
我应该使用什么定义,以便操作符将在支持它的所有版本中编译,但在旧的Delphi版本中将被忽略。
type
Iso8601 = {$ifndef UNICODE}object{$else}record{$endif}
data: Integer;
{$ifdef ????} <-- what to put here
class operator Add(A: Iso8601): Iso8601;
{$endif}
end;
我知道具有成员函数的记录与Unicode更新一致,但是我对类操作符使用什么定义?
答案 0 :(得分:2)
正如TLama所说:他们是introduced in Delphi 2006,所以{$IF CompilerVersion >= 18}
。
另请参阅http://docwiki.embarcadero.com/RADStudio/XE6/en/Compiler_Versions
并查看ulrichb在Complete list of defines for Delphi versions处对Jedi.inc中文件的回答。它是我用来处理不同编译器版本的不同代码的方法
修改:我也喜欢https://github.com/project-jedi/jedi/blob/master/jedi.inc,因为它对每种语言功能都有单独的定义,例如您请求的SUPPORTS_CLASS_OPERATORS。
&#34; UP&#34;定义,例如, DELPHIXE2_UP在XE3,XE4,5,6等中也是如此