C和C++函数编译方式是不同的
为什么C和C++函数编译方式是不同的呢?以这个函数为例子:void add( int x, int y );
在C语言中,函数是不允许重载的,每个函数名字都是独一无二的,所以我们编译的时候,可以直接用函数的名字唯一标识这个函数(类似于_add这样的符号);
而在C++中,函数可以重载,但是重载函数的名字是相同的,所以不能只用函数名标识函数,而必须增加额外信息来加以区分不同的重载函数,如例子函数的符号为 _add_int_int ,这样的名字包含了函数名、函数参数的数量及类型信息,C++靠这些额外的信息就可以根据参数的不同实现函数的重载。
extern “C”
由于C语言和C++语言的函数编译方式不同,如果我们直接在C++程序中调用C函数(或者反之),会发生编译错误。
这个时候,就要使用extern “C”来说明。
extern "C"的作用是:告诉C++编译器件括号里的所有是按照C的obj文件格式编译的,要连接的话按照C的命名规则去找。
具体使用方式例子:
https://blog.csdn.net/shuizhizhiyin/article/details/51271897