extern

来源:互联网 发布:达内培训怎么样 知乎 编辑:程序博客网 时间:2024/05/24 02:49

0值判断:!bool  int==0  ptr==NULL  

float如下:float不可用== !=来比较数值,因为他本身就是不精准的数值。

const float EPSINON = 0.00001;

   if ((x >= - EPSINON) && (x <= EPSINON)


1.引用外部变量; extern int a;

2.定义为可以被外部变量使用的变量; extern int a = 0;

3.引用外部的函数; extern int abc(){} ; 这样的好处就不必把该函数所在的头文件包含进来。可以加速编译过程(加速预处理过程),因为只要链接好,即使不加头文件都是可以调用的嘛。

4.定义为可以被外部对象使用的函数;extern int abc(){}

5. 被extern "C"修饰的变量和函数是按照C语言方式编译和连接的;

 因为c++ 、

1.具有重载特性,其实际上在内部是把两个同名的函数给改了名字的,这个名字信息包含了参数信息等

2.c++有成员变量,通过.来达到引用;即使成员变量与全局变量同名也没所谓;其实c++在内部把同名的成员变量都会重新取个名字,达到独一无二名字。

所以按照C方式进行编译链接,以上东东都是不行的,否则会报重命名等错误阻止编译的继续执行。


所以,可以用一句话概括extern“C”这个声明的真实目的(任何语言中的任何语法特性的诞生都不是随意而为的,来源于真实世界的需求驱动。我们在思考问题时,不能只停留在这个语言是怎么做的,还要问一问它为什么要这么做,动机是什么,这样我们可以更深入地理解许多问题):
实现C++与C及其它语言的混合编程。

C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。


(1)在C++中引用C语言中的函数和变量,在包含C语言头文件(假设为cExample.h)时,需进行下列处理:
extern "C"
{
#i nclude "cExample.h"
}
(2)在C中引用C++语言中的函数变量时,C++的头文件需添加extern "C",但是在C语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型。

原创粉丝点击