Daily190422

Technology

extern “C”

如果在Cpp文件中需要调用C的代码,一般会出现一下的代码:

1
2
3
4
5
6
7
#ifdef _cplusplus
extern "C"{
#endif
// normal code
#if def _cplusplus
}
#endif

首先_cplusplus是所有cpp文件都会内部定义的一个宏,表明当前文件是以cpp的方式进行编译的。
而cpp与c文件在编译的过程中对函数名的解析是不同的,例如:foo(int,int)在cpp中会被编译成foo_int_int
而在c中只是foo,也是因为这个特性,所cpp支持函数名的冲载。加了extern”C”则表示按照cpp的方式进行编译。