C++:extern c浅析
一、C++编译
1、C++支持函数重载,为避免函数重名,在编译过程中须重命名,导致调用c语言的函数会链接失败,如下(具体编译须看编译器,在此仅举例说明):
void print(int var) -> _print_int
void print(char var) -> _print_char
2、C语言中,编译过程中函数名无须重命名。
二、C++中调用C语言库函数
1、方法一:在C++中解决 - 假设C函数库test.h中存在函数void Show()函数;在C++程序中加入:extern "C" void show();
2、方法二:在C函数库头文件中解决
#ifdef __cplusplus // 双下划线
extern "C" {
#endif
...
void Show();
...
#ifdef __cplusplus // 双下划线
}
#endif