我已经创建了一个导出多个函数的DLL(使用stdcall)。 我想让他们中的一些人接受或不接受参数。所以一个懒惰的程序员可以在没有任何参数的情况下调用它。 我在论坛上的某处读到默认参数在DLL-s中不起作用。我唯一的选择是创建两个具有不同名称的函数,例如:
procedure DoSomething();
begin
DoSomethingParams(1, 'Hi');
end;
procedure DoSomethingParams(one: Integer; two: PChar);
begin
//
end;
?或者也许有一种更优雅的方式来实现这一目标?
答案 0 :(得分:4)
默认参数可以与DLL一起使用。但是,当函数导入而不是导出时,必须声明默认参数。那是因为默认参数是在呼叫站点实现的。调用者检测到参数丢失并生成代码以提供缺少的参数。
因此,在导入DLL时可以使用默认参数,前提是使用DLL的语言支持该语法。
由于DLL通常用于提供语言中性接口,并且由于某些语言不支持默认参数,因此很少在DLL接口中使用它们。