最近在做一个项目,包含有C++和C的代码,
在Makefile 里指定所有的cpp文件使用C++编译器(g++)编译,所有的c文件使用C编译器(gcc),
然而在编译过程中(链接阶段)出现了 xxx undefined,函数未定义的错误提示。
后来经过一番搜索,发现是linkage的问题,我也不知道这个词怎么翻译,简单的说就是要加 extern “C”
为啥要extern “C”
举个栗子好了,假如有3个文件,分别叫做
zero.h
zero.c
one.cpp
one.cpp:
#include "zero.h" int add(int a,int b) { return a+b; } int main() { add(1,2); add(3.0,4.0); return 0; }
zero.h:
double add(