1,首先我们来看一下C++调用C语言的代码。要让你的C代码既能被C代码又能被C++调用虽说容易,但是还是有需要注意的地方。现有三个文件分别如下:
/* file TestC.h */ #ifndef TESTC_H #define TESTC_H #ifdef __cplusplus//2个下划线 extern "C"{ #endif int add(int a,int b); #ifdef __cplusplus } #endif #endif
/* TestC.c */ #include "TestC.h" int add(int a,int b) { return (a+b); }
/* TestCPP.cpp */ #include <stdio.h> #include "TestC.h" int main() { printf("add=%d\n",add(2,5)); return 0; }
extern关键字表示将函数或变量声明为全局类型,与之相对应的是static。static限定函数或变量的作用域为本文件。extern还有一个作用就是与”C”连在一起使用,即extern “C”通知编译器将extern “C”所包含的代码按照C的方式编译和链接。
/* TestClass.h */ class ADD { public: int add(int a,int b) { return (a+b); } };
/* TestCPP.cpp */ #include "TestClass.h" extern "C" int add_cpp(int a,int b); int add_cpp(int a,int b) { ADD s; return s.add(a,b) ; }
/* TestC.c */ #include <stdio.h> extern int add_cpp(int a,int b); int main() { printf("add_cpp=%d\n",add_cpp(2,5)); return 0; }