标签:因此 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语言代码的函数时不会带上函数的参数类型,一般只包括函数名。
标签:因此 cpp turn 函数 clu print pre 错误 命令行
原文地址:https://www.cnblogs.com/jiangyibo/p/9007227.html