gpt4 book ai didi

delphi - 如何为 DLL 过程(stdcall)创建默认参数?

转载 作者:行者123 更新时间:2023-12-03 15:48:28 26 4
gpt4 key购买 nike

我制作了一个 DLL,它导出多个函数(使用 stdcall)。我想让其中一些接受或不接受参数。所以懒惰的程序员可以直接调用它而不需要任何参数。我在论坛上的某个地方读到默认参数在 DLL-s 中不起作用。我唯一的选择是创建两个具有不同名称的函数,例如:

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

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

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

最佳答案

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

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

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

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

关于delphi - 如何为 DLL 过程(stdcall)创建默认参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16419777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com