编译器如何知道函数指针指向的函数的 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/