缘由用途
主要用于c++与其他语言的混合编程,C语言不支持函数重载,编译之后的函数名依然是原函数名。在c++中,支持了函数重载,重载之后的函数名 为 原函数名+参数名。比如函数 bool max(int a, int b),编译之后,c中为 max, 而c++中函数名变成了 max_int_int。
c++
使用
c++头文件中调用c语言代码
c语言不支持 extern "C", 要让其他语言按c格式编译,必须在c++头文件中调用c语言,使用extern "c"申明。
extern “C” 告诉 编译器, 按C语言的格式编译和链接
// a.h
#ifndef A_H
#define A_H
extern "C" int max(int a, int b);
#endif
以上代码, A模块调用其他模块的max函数, 如果不使用extern "C"申明, 会按C++语法编译, 编译后调用函数名为max_int_int,而实际需要调用名为max,此时连接器会找不到要调用的函数模块而报错。
c语言引用c++头文件