Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)aaapublished in(发表于) 2014/7/19 0:13:36 Delphi过程与函数的调用约定
过程与函数的调用约定在调用过程或函数的时候,如果参数列表中具有多个参数,那么参数传递给过程或函数的顺序会对结果产生一定的影响。对于不同的语言,参数传递的顺序是不同的:Pascal 语言是按照从左向右的顺序进行传递的,而C 语言是按照从右向左的顺序来传递的。为了确定传递的顺序,可以在过程或函数定义的时候,在Directives 部分利用指令字指定传递的顺序。来自Delphi 的联机帮助的数据,如表4-13 所示,其中列举了Directives 部分可使用的关于函数调用约定的指令字。定义过程与函数时对调用约定起作用的指令字·Register:从左向右·Pascal:从左向右·Stdcall:从右向左·safecall:从右向左·Cdecl:从右向左可以通过下面的例子查看参数传递的顺序: program Project1;{$APPTYPE CONSOLE}function P1:Integer; //该函数将作为GetMax 函数的第1 个参数beginWriteln(’P1’);Result:=0;end;function P2:Integer; //该函数将作为GetMax 函数的第2 个参数beginWriteln(’P2 ’) ;Result:=1;end;//参数的传递方式采用pascal 方式function GetMax(N1:Integer; N2:Integer):Integer;pascal;beginResult:=N1+N2;end;beginGetMax(P1,P2);end.运行结果如下: P1P2如果将GetMax 函数定义处的Directives 部分由Pascal 改为Stdcall,则运行结果变为: P2P1用户可以修改GetMax 函数定义处的Directives 部分为表4-9 中的其他数值,测试结果是否一致。
赞