gpt4 book ai didi

c# - C# 和 C++ 中的可选参数

转载 作者:行者123 更新时间:2023-11-28 02:31:51 35 4
gpt4 key购买 nike

我开始思考可选参数如何在 COM 对象 (C#) 和 C++ 对象(或任何其他语言)之间工作。

例如,我有一个用 c# 构建的 COM 对象,它具有 DoSomething,它采用两个参数 - par1 和 par2。其中,par2在方法定义中是可选的。

public void DoSomething(string par1, string par2 = "value2");

现在,C++ 如何解释 DoSomething 方法签名?如果我继续在我的 COM 对象中添加可选参数,是否会在消费者级别 (C++) 出现代码中断。

有什么意见吗?

最佳答案

是的,这是打破。默认值由调用者而不是被调用者应用。

因此您必须使用更新后的类型库重新构建您的 C++ 客户端程序。当您使用早期绑定(bind)时,忘记这样做是非常不愉快的,它会从堆栈中弹出太多参数。堆栈不平衡会产生几乎无法诊断的非常讨厌的不当行为。所以不要走捷径不更新接口(interface){guid},你会后悔的。只有使用后期绑定(bind) (DISP_E_BADPARAMCOUNT) 才能获得良好的诊断结果。

关于c# - C# 和 C++ 中的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768259/

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