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

Edw*_*Yip 5 delphi

从优秀的Detour库中查看此演示源:

implementation

{$R *.dfm}

var
  TrampolineGetMemory: function(Size: NativeInt): Pointer;
cdecl = nil;
Run Code Online (Sandbox Code Playgroud)

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

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

J..*_*... 7

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

program Project1;

{$APPTYPE CONSOLE}

var
  i : integer = 5;
begin
  WriteLn(i);
  ReadLn;
end.
Run Code Online (Sandbox Code Playgroud)

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

var
  TrampolineGetMemory: function(Size: NativeInt): Pointer; cdecl = nil;
Run Code Online (Sandbox Code Playgroud)

或者如果定义了类型,甚至可能更好:

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

//... 
 var
   TrampolineGetMemory: TTrampolineGetMemory = nil;
Run Code Online (Sandbox Code Playgroud)

  • @Gerry或希望读者毫无疑问而不必思考 (4认同)

Uli*_*rdt 7

TrampolineGetMemory是一个初始化为的过程变量nil.

更容易看出是否重写了

type
  TTrampolineGetMemory = function(Size: NativeInt): Pointer; cdecl;
var
  TrampolineGetMemory: TTrampolineGetMemory = nil;
Run Code Online (Sandbox Code Playgroud)