c与C++的混合编程
C是结构化语言,强调算法和数据结构,轻量高效;C++面向对象,强大灵活;如今C/C++的编译器能支持其混合编程,从而发挥各自优点。
C++调用C步骤:
- C代码的头文件格式,告诉C++编译器,该头文件(C)中的函数按C编译处理:
1 #ifdef __cplusplus 2 extern "C" { 3 #endif 4 5 void fun(void* ,int); 6 7 #ifdef __cplusplus 8 } 9 #endif 10 11 12 /*helloworld.c*/ 13 #include <stdio.h> 14 void sayhello(char *str) 15 { 16 printf(“hello world\n”); 17 } 18 19 /*main.cpp*/ 20 #include <iostream> 21 using namespace std; 22 extern “C” void sayhello(char *str); 23 int main(int argc,char *argv[]) 24 { 25 sayhello(“hello from cpp to c\n”); 26 return 0; 27 }
- 在C++源文件中用extern “C”声明,按函数调用方法调用。
- 编译时,指定编译规则(C源文件用gcc编译器,C++用g++编译器):
g++ -c main.cpp -o main.o
gcc -c helloworld.c -o helloworld.o
gcc main.o helloworld.o -lstdc++ -o main
C调用C++步骤:
- 原本在C中定义的函数在C++中定义,并且C++中对C函数用extern “C”声明
- C++中定义最终在C中被调用的函数,可以调用C++的所有特性进行设计。
- C中正常调用C++中的函数。
- 编译:
g++ -c hello.cpp -o hello.o
gcc -c main.c -o main.o
gcc hello.o main.o -lstdc++ -o main