【发布时间】:2011-07-19 15:20:18
【问题描述】:
有一个支持回调函数类型的 C 库(我无法更改)
void (*callback)(void *appContext, int eventid)
我想设置一个 C++ 函数作为回调。
具体我有以下问题?
需要在
"extern C"块下声明回调函数吗?成员函数是否必须是静态的才能成为回调函数?是否可以使用非静态成员函数?如果是,如何?什么时候推荐使用非静态成员函数?
函数是否为模板函数是否重要?
非类 C 风格的函数比类成员函数有什么优势吗?
我正在旧的 VC++ 编译器上尝试这些变体,它不支持最新的 C++ 标准。但是代码需要独立于平台,并且应该适用于大多数 C++ 编译器。我想知道回调的推荐做法是什么?
【问题讨论】:
-
您使用的是什么版本的 C/C++? (即 MSVC、GCC)
-
我现在正在使用 MSVC。但是代码需要独立于平台,因为它也将被移植到 linux 平台。