如何为DLL程序(stdcall)创建默认参数?

时间:2013-05-07 13:03:04

标签: delphi dll dllexport stdcall

我已经创建了一个导出多个函数的DLL(使用stdcall)。 我想让他们中的一些人接受或不接受参数。所以一个懒惰的程序员可以在没有任何参数的情况下调用它。 我在论坛上的某处读到默认参数在DLL-s中不起作用。我唯一的选择是创建两个具有不同名称的函数,例如:

procedure DoSomething();
begin
  DoSomethingParams(1, 'Hi');
end;

procedure DoSomethingParams(one: Integer; two: PChar);
begin
//
end; 

?或者也许有一种更优雅的方式来实现这一目标?

1 个答案:

答案 0 :(得分:4)

默认参数可以与DLL一起使用。但是,当函数导入而不是导出时,必须声明默认参数。那是因为默认参数是在呼叫站点实现的。调用者检测到参数丢失并生成代码以提供缺少的参数。

因此,在导入DLL时可以使用默认参数,前提是使用DLL的语言支持该语法。

  • 在DLL代码中,导出该函数。如果您愿意,可以在那里指定默认参数,但它不会对DLL的使用者产生任何影响。
  • 在导入DLL函数的代码中,声明您的默认参数。这是在此时声明的默认值。

由于DLL通常用于提供语言中性接口,并且由于某些语言不支持默认参数,因此很少在DLL接口中使用它们。