gpt4 book ai didi

assembly - __cdecl 调用约定如何返回结构?

转载 作者:行者123 更新时间:2023-12-02 17:17:50 25 4
gpt4 key购买 nike

我想调用一个返回 struct 的函数,这个函数有 __cdecl 调用约定。

__cdecl 调用约定如何返回一个struct

最佳答案

视情况而定。

没有统一的方法。

简单的函数返回,比如int在寄存器中返回,但是没有调用约定,__cdecl, __stdcall等描述struct 是如何返回的。

  • 有些返回简单的结构,适合这些提到的寄存器中的一个(EAX、RAX)或两个寄存器(EDX:EAX 或 RDX:RAX)。
  • 其他人通过引用返回这样的structs,即函数结果被编译为一个void函数,将一个额外的指针参数指向这样一个struct .
  • 其他人则混合使用这些策略。

我在这方面遇到了很大的问题(返回 struct 的 DLL 函数)。事实上,不同的编译器使用不同的策略来返回 struct即使是在同一平台上并使用相同的调用约定,这让我发出了永远不应该返回的警告structs,例如,DLL 函数。

更多信息:

关于assembly - __cdecl 调用约定如何返回结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241488/

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