获取错误150:编译期间未启用C ++功能

时间:2013-09-19 05:21:57

标签: c++ c

我试图从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 ++功能。

有人可以帮我解决此错误。

1 个答案:

答案 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。 尝试编译仅包含

的C文件
#ifdef __cplusplus
#error problem
#else
#error OK
#endif

这应该标记“OK”行上的错误。如果它做了什么,编译器(非常)有缺陷。