extern "C"什么意思


缘由

C语言不支持函数重载,编译之后的函数名依然是原函数名。在c++中,支持了函数重载,重载之后的函数名 为 原函数名+参数名。比如函数 bool max(int a, int b),编译之后,c中为 max,  而c++中函数名变成了  max_int_int。

使用

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函数

c语言引用c++头文件


你可能感兴趣的:(C++,c,extern)