Delphi - 我能否为const和var声明编写自己的编译时函数,在编译时可执行。
标准的Delphi库包含像Ord(),Chr(),Trunc(),Round(),High()等例程,用于常数初始化。
我是否可以编写自己的例程,在编译时执行,并将结果用作常量?
Delphi - 我能否为const和var声明编写自己的编译时函数,在编译时可执行。
标准的Delphi库包含像Ord(),Chr(),Trunc(),Round(),High()等例程,用于常数初始化。
我是否可以编写自己的例程,在编译时执行,并将结果用作常量?
内联
根据您的需求,您可以使用内联来实现几乎与内置函数相同的效率。
参见:https://dev59.com/MljUa4cB1Zd3GeqPQ2bu#6401833
使用内置函数构建语句
如果您有一个由内置函数组成的代码块,则完整结果将在编译时计算,使得整个结构就像内置函数一样工作。
请注意以下(愚蠢的)示例:
function FitsInRegister<T>: Boolean; inline;
begin
if GetTypeKind(T) in [tkString, tkUString] then result:= false
else
{$IFDEF CPU32BITS}
Result:= SizeOf(T) <= 4;
{$ELSEIF CPU64BITS}
Result:= SizeOf(T) <= 8;
{$ENDIF}
end;
我能自己编写代码,在编译时执行常规操作并将结果用作常量吗?
不可以。这些函数内置于编译器中,它没有扩展机制允许第三方提供内置函数。