我试图从C文件中调用C ++函数,我已将.h文件中的函数声明为:
文件a.h:
#ifdef __cplusplus
#define EXTERNC extern "C"
#else
#define EXTERNC
#endif
EXTERNC void func();
#undef EXTERNC
函数func()的定义出现在a.cpp文件中。
我有一个b.c文件,我想调用函数func()。我已经在b.c中包含了a.h文件并正常调用函数func()。但在编译期间,我收到以下错误:
编译b.c a.h(192):错误150:0:未启用C ++功能。
有人可以帮我解决此错误。
答案 0 :(得分:1)
它似乎是对C文件中C ++代码的抱怨。你做有一个C文件,所以要确保条件编译正确。
#ifdef __cplusplus
#ifdef COMING_FROM_B_C
#error __cplusplus is defined in inclusion from b.c
#endif
#define EXTERNC extern "C"
#else
#define EXTERNC
#endif
EXTERNC void func();
#undef EXTERNC
并在b.c
#define COMING_FROM_B_C 1
#include "a.h"
C编译器被禁止预定义__cplusplus
,但有些东西可能出错了。
从你到目前为止所说的,听起来好像编译器停在#ifdef __cplusplus
。
尝试编译仅包含
#ifdef __cplusplus
#error problem
#else
#error OK
#endif
这应该标记“OK”行上的错误。如果它做了什么,编译器(非常)有缺陷。