首页 > 解决方案 > C++ 使用 C 调用约定调用回调

问题描述

我有一个带有 C 兼容标头的库。这个库 100% 用 C++ 实现。尽管如此,重要的是调用约定都是 C,因为库函数将从 C 和 C++ 代码中调用。

// HEADER (C/C++)
#ifdef __cplusplus
extern "C" {
#endif

typedef void(*my_callback)(int);

#ifdef __cplusplus
}
#endif
// SOURCE (C++)
void foo(my_callback callback) {
    callback(2);
}

如何确保my_callback始终使用 C 调用约定调用它?typedef在一个extern "C"块内就足够了吗?

标签: c++ccallbackheadercalling-convention

解决方案


推荐阅读