收到错误 150:编译期间未启用C++功能

Getting Error 150: C++ feature not enabled during compilation

本文关键字:启用 C++ 功能 编译 错误      更新时间:2023-10-16

我正在尝试从 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.cA.H(192) : 错误 150: 0: 未启用C++功能。

有人可以帮助我解决此错误吗?

看起来像是对 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

这应该在"确定"行上标记错误。如果它执行任何其他操作,则编译器(非常)有缺陷。