c++ - 在 C/C++ 中通过指针调用函数时,编译器如何正确处理 ABI?

标签 c++ c function function-pointers

编译器如何知道函数指针指向的函数的 ABI?

In computer software, an application binary interface (ABI) is an interface between two program modules.

由于在 C/C++ 中,函数指针仅指定 API,因此不知道它实际使用的是哪种 ABI,这对编译器来说不会是个问题,尤其是当它们无法静态计算出来时吗?

这是否意味着使用这种指针的程序员需要手动指定调用约定?

如果是这样,该怎么做?谁能给我一些编译器文档的链接?

最佳答案

如果函数使用的调用约定与您所在平台的默认调用约定不同,那么是的,您需要手动指定调用约定。大多数平台都尝试使用单个 ABI,尽管有一组单一的或可预测的调用约定,因此任何编译器都知道如何调用任何函数。

虽然这超出了 C++ 的范围,但如果您可以或需要指定调用约定,则可以使用您正在使用的编译器的非标准扩展来完成。

关于c++ - 在 C/C++ 中通过指针调用函数时,编译器如何正确处理 ABI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49688913/

相关文章:

c - 将函数调用为 fun() 和 fun 有什么区别?

c++ - 实现最速下降算法,可变步长

c++ - 如何合并两个双向链表(访问下一个链接)

无法从C中的txt文件中读取所有数字

c - 程序的时间复杂度

javascript - 将函数限制为 1 次执行 YouTube 播放器 api

c++ - 特定整数常量的重载比较

c++ - 使用 C++ 的 SQL - 瓶颈在哪里?

c - 使用指针的段错误(核心转储)

c++ - 未定义对 C++ 中静态函数指针成员的引用,我做错了什么?