Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)aaa
published in(发表于) 2014/7/19 0:13:36
Delphi过程与函数的调用约定

Delphi过程与函数的调用约定

过程与函数的调用约定

在调用过程或函数的时候,如果参数列表中具有多个参数,那么参数传递给过程或函数的顺序会对结果产生一定的影响。对于不同的语言,参数传递的顺序是不同的:Pascal 语言是按照从左向右的顺序进行传递的,而C 语言是按照从右向左的顺序来传递的。为了确定传递的顺序,可以在过程或函数定义的时候,在Directives 部分利用指令字指定传递的顺序。

来自Delphi 的联机帮助的数据,如表4-13 所示,其中列举了Directives 部分可使用的关于函数调用约定的指令字。

定义过程与函数时对调用约定起作用的指令字

·Register:从左向右

·Pascal:从左向右

·Stdcall:从右向左

·safecall:从右向左

·Cdecl:从右向左

可以通过下面的例子查看参数传递的顺序:

program Project1;

{$APPTYPE CONSOLE}

function P1:Integer; //该函数将作为GetMax 函数的第1 个参数

begin

Writeln(’P1’);

Result:=0;

end;

function P2:Integer; //该函数将作为GetMax 函数的第2 个参数

begin

Writeln(’P2 ’) ;

Result:=1;

end;

//参数的传递方式采用pascal 方式

function GetMax(N1:Integer; N2:Integer):Integer;pascal;

begin

Result:=N1+N2;

end;

begin

GetMax(P1,P2);

end.

运行结果如下:

P1

P2

如果将GetMax 函数定义处的Directives 部分由Pascal 改为Stdcall,则运行结果变为:

P2

P1

用户可以修改GetMax 函数定义处的Directives 部分为表4-9 中的其他数值,测试结果是否一致。




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759