stdcall 和 cdecl 是编程中使用的两种常见调用约定语言。开发人员经常对其功能和兼容性有疑问。
1.堆栈清理职责
当调用cdecl函数时,调用者负责在函数返回后清理堆栈。这是因为 cdecl 调用约定指定被调用者(被调用函数)不清理堆栈。编译器知道函数的调用约定,相应地生成代码。
2.不匹配的调用约定
具有一种调用约定的函数调用具有另一种调用约定的函数通常不会出现问题。例如, stdcall 函数可以调用 cdecl 函数,反之亦然。但是,重要的是要确保编译器不会发出与不匹配的调用约定相关的任何错误。
3.性能注意事项
stdcall 和 cdecl 调用约定之间通常没有显着的性能差异。编译器根据调用约定高效生成堆栈清理和参数传递的代码。
以上是调用者何时负责 C 函数调用中的堆栈清理?的详细内容。更多信息请关注PHP中文网其他相关文章!