码迷,mamicode.com
首页 > 编程语言 > 详细

gcc C调用C++

时间:2018-05-08 12:08:01      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:因此   cpp   turn   函数   clu   print   pre   错误   命令行   

编程之路刚刚开始,错误难免,希望大家能够指出。

简单的记录下c文件调用cpp文件,用代码来说明:

 1 /* test.h */
 2 #ifdef __cplusplus
 3 extern "C"
 4 {
 5 #endif
 6 int add(int x,int y);
 7 #ifdef __cplusplus
 8 }
 9 #endif
10 
11 
12 /* test.cpp */
13 #include "test.h"
14 
15 int add(int x,int y)
16 {
17     return x+y;
18 }
19 
20 
21 /* main.c */
22 #include <stdio.h>
23 #include "test.h"
24 
25 int main()
26 {
27     int d = add(1,2);
28     printf("%d\n",d);
29 
30     return 0;
31 }

命令行:gcc main.c test.cpp

 

这里其实只需要明白下面这一段就没问题:

#ifdef __cplusplus 
extern "C" { 
#endif

//一段代码

#ifdef __cplusplus 

#endif 

 

__cplusplus是cpp中的自定义宏,上面的代码的含义是:如果宏 __cplusplus被定义,那么说明这一段是cpp代码,所以加上extern "C"{和}处理其中的代码。

extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。

gcc C调用C++

标签:因此   cpp   turn   函数   clu   print   pre   错误   命令行   

原文地址:https://www.cnblogs.com/jiangyibo/p/9007227.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!