C编译器在尝试包含C++类标头时生成错误

C Compiler is generating errors when trying include C++ class header

本文关键字:错误 C++ 编译器 包含      更新时间:2023-10-16

我正在使用gcc(C编译器(不能使用C++))编译C代码,其中一个.C文件包含一个定义C++类Monitor的头(Monitor.h)。当我尝试编译时,我收到以下错误:-

在/home/tp/workspace/gft/Display.h:39中包含的文件中,来自asr_iface_ctl.c:29:

/home/tp/workspace/pcd/Monitor.h:19:错误:应为'=',',';','asm'或'_属性_'在'Monitor'之前

以下是我传递给编译器(Makefile)的一些标志:

COMPILE_LEVEL = -O3
OPTIONS       = -g -Wall $(COMPILE_LEVEL) -D_REENTRANT
.SUFFIXES:
.SUFFIXES: .cpp .c $(SUFFIXES)
TMP  = $(SRC:.c=.o)
OBJS = $(TMP:.cpp=.o)
.cpp.o:
    @echo "    Compiling  $<"
    @$(CPP) $(CFLAGS) -c $<
.c.o:
    @echo "    Compiling  $<"
    @$(CC) $(CFLAGS) -c $<
    @ar -rc $(LIB) $@

在.C文件中包含C++类头可以吗?如果是,我如何解决上述错误?

注意:我不能使用C++编译器。

不,不能在C程序中包含C++头。C++不是C,C编译器不会理解C++。

你所要做的就是大声说出这个。"我不能使用C++。我正在尝试使用C++类并包含C++标头。"

你被互联网上提到的C/C++一词误导了。没有这样的语言;虽然您可以在C++中使用大部分C,因为C++被设计为与大多数C代码兼容,但事实并非如此。注意:C不是C++,C++不是C,但是,C++与C共享一个子集。