gpt4 book ai didi

c++ - 作为函数指针的静态方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:10:44 28 4
gpt4 key购买 nike

在很多情况下,C 框架使用函数指针来扩展功能和通知监听器(例如 win32-api 和 GLUT)。在对面向对象的 C++ 进行编程时,您更喜欢使用类和对象来处理这个问题。所以我的问题是:

在 C 库需要函数指针的地方使用指向静态方法的指针是否安全?

最佳答案

形式上,不,你不能这样做,但在实践中,是的。要从 C 代码调用,C++ 函数必须标记为 extern "C",以确保它使用 C 编译器期望的调用约定。无法将静态成员函数标记为 extern "C",因此无法保证它可以从 C 代码中成功调用。我不知道哪个编译器对静态成员函数不使用与 C 代码相同的调用约定,所以这会起作用。有些编译器会针对这种情况发出警告,因为从技术上讲,函数的类型错误。事实上,如果您查看 C++ 标准,就会发现接受回调的 C 函数(例如 qsort)有两个版本:一个接受 extern "C" 函数,采用 extern "C++" 函数的函数。

关于c++ - 作为函数指针的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15703347/

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