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"时会出现编译语法错误。
extern "C"
{
#i nclude "cExample.h"
}
(2)在C中引用C++语言中的
函数
和
变量
时,C++的头文件需添加extern "C",但是在C语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"
函数
声明为extern类型。