我可以在1 C ++项目中混合使用c和cpp文件吗?

我还是初学者,我正在使用eclipse。

我有一个项目,其中混合了c文件和cpp文件。 链接器向我抛出错误:

undefined reference to  

将所有*.c文件重命名为*.cpp ,错误消失。 所以我不能混合这些文件或这是一些编译器/链接器选项问题?


我的选择:

GCC C ++编译器:

 -I/usr/include/glib-2.0 -I/usr/include/gtk-2.0 -I"/myPath" -O0 -g3 \ -Wall -c -fmessage-length=0 `pkg-config --cflags glib-2.0 gtk+-2.0 

GCC C编译器:

 -I/usr/include/glib-2.0 -I/usr/include/gtk-2.0 -I"/myPath" -O0 -g3 \ -Wall -c -fmessage-length=0 -std=c99 `pkg-config --cflags glib-2.0 gtk+-2.0` 

GCC C ++链接器:

 -L/usr/include/glib-2.0/glib `pkg-config --libs gtk+-2.0` 

好吧,因为它说的是C ++ Linker,这是否意味着c文件中的目标文件无法链接到项目中(默认情况下)?

extern "C"是一种方法。 另一种方法,假设你的C文件是(几乎无处不在)排序,已经可以编译为C ++,只是强迫编译器将它们视为C ++(它给它们适当的名称修改以使用你的C ++文件)。 对于GCC,这是-x c++

你需要像这样包装 C代码

 extern "C" { #include "sample1.h" } 

更好的方法就是在这个StackOverflow问题中 ,在C头文件中。

使用:

 #ifdef __cplusplus extern "C" { #endif 

所有C头文件的开头。

并使用:

 #ifdef __cplusplus } #endif 

所有C头文件的末尾。