C 引用C++外部

C referencing C++ extern

本文关键字:外部 C++ 引用      更新时间:2023-10-16

我有一个使用英特尔编译器的Windows编译中的头文件。 标题如下所示:

#ifdef _MAIN
Loggerp        logger;
#else
extern Loggerp logger;
#endif

_MAIN宏在C++文件中定义,并且有一个包含标头的 C 文件。 这将生成一个"...LNK2019:未解析的外部符号..."因为C++编译修饰(破坏("记录器"名称,以便链接器无法将未修饰的 C 名称与修饰的C++名称匹配。

MSVC 文档指出,MS 编译器将同时支持"外部"C"和"外部"C++"。 但是,英特尔编译器将"extern"的引号标记为错误。

有谁知道如何让英特尔编译器标记此引用,以便它可以链接到 C++ 和 C ?

// when compiling C++ code, use the non-mangled C names
#ifdef __cplusplus
# define EXTERN extern "C"
#else
# define EXTERN extern 
#endif
EXTERN Loggerp logger;