extern 'c'

 一. extern的作用

    1.1. 当它与"C"一起连用时,如: extern "C" void fun(int a, int b);

        <1>. 则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名,而不是按照C++的规则

        <2>. C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是 fun@aBc_int_int#%$,

    也可能是别的,这要看编译器的"脾气"了(不同的编译器采用的方法不一样),为什么这么做呢,因为C++支持函数的重载啊,在这里不去过多的论述这个问题

    1.2. 当extern不与"C"在一起修饰变量或函数时,如在头文件中: extern int g_Int;

        <1>. 它的作用就是声明函数或全局变量的作用范围的关键字

二. extern "C"应用场景

    <1>. 以 c 语言的编译的源文件想使用c++编译的函数

    <2>. 以 c++ 编译的动态库文件,用 c 编译器编译的源文件中想使用其动态库中的函数

三. 头文件中的 extern 'c'

 

#ifdef __FUNC_H_

#define _FUNC_H_

#ifdef __cplusplus__

extern "C" {

#endif
 

。。。

#ifdef __cplusplus__
}
#endif
#endif

 

posted @ 2019-07-30 16:41  三七鸽  阅读(204)  评论(0编辑  收藏  举报