C 引用 C++ extern

C referencing C++ extern

我在 Windows 编译中有一个 header 文件,使用英特尔编译器进行编译。 header 看起来像这样:

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

_MAIN 宏在 C++ 文件中定义,并且有一个包含 header 的 C 文件。这会生成一个“...LNK2019:未解析的外部符号...”,因为 C++ 编译修饰(破坏)'logger' 名称,使得链接器无法将未修饰的 C 名称与修饰的 C++ 名称相匹配。

MSVC 文档声明 MS 编译器将同时支持 'extern "C"' 和 'extern "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;