GCC,MSVC或Clang,或某些组合支持设置链接默认为C?
我有一个大型的混合C / C ++项目,虽然使用C链接在C ++源代码中导出符号既简单又合乎逻辑,但这些相同的源代码假设项目其余部分的内容都是在C ++链接下。
当前的情况要求我明确地包装C源代码中定义的C源代码所使用的内容以及C ++源代码使用extern "C++"
的C源代码所使用的所有内容。
最重要的是,我不能将extern "C"
放在整个源文件或头文件中,因为实际的C ++内容会抱怨。 (例如来自#include <memory>
或我定义的模板。)
答案 0 :(得分:7)
头文件中的标准模式是:
#ifdef __cplusplus
// C++ stuff
extern "C" {
#endif
// C/C++ stuff
#ifdef __cplusplus
}
#endif
我不确定你还有其他选择。必须在任何地方使用C链接声明C / C ++内容。必须在任何地方用C ++链接声明特定于C ++的东西。
答案 1 :(得分:1)