'cdecl = nil'(放在函数声明后)是什么意思?

时间:2016-04-19 13:35:35

标签: delphi

从优秀的Detour库中查看demo source

implementation

{$R *.dfm}

var
  TrampolineGetMemory: function(Size: NativeInt): Pointer;
cdecl = nil;

请查看cdecl = nil;声明。在这种情况下它意味着什么?

注意 - 我已经知道cdecl代表一个调用约定。

2 个答案:

答案 0 :(得分:7)

这只是初始化变量的另一种方法。例如:

program Project1;

{$APPTYPE CONSOLE}

var
  i : integer = 5;
begin
  WriteLn(i);
  ReadLn;
end.

如果将其写在一行上可能会更清楚

var
  TrampolineGetMemory: function(Size: NativeInt): Pointer; cdecl = nil;

如果定义了类型,可能更好:

type
  TTrampolineGetMemory = function(Size: NativeInt): Pointer; cdecl;

//... 
 var
   TrampolineGetMemory: TTrampolineGetMemory = nil;

答案 1 :(得分:7)

TrampolineGetMemory是一个程序性变量,初始化为nil

如果重写为

,则更容易看到
type
  TTrampolineGetMemory = function(Size: NativeInt): Pointer; cdecl;
var
  TrampolineGetMemory: TTrampolineGetMemory = nil;