math数学函数库中的宏

数学函数头文件中定义常见宏,先记录下来。HUGE_VAL:表示正的double常量, 代表正的无穷大HUGE_VALF:表示浮点类型的正值无穷大HUGE_VALL:表示long double?类型的正的无穷大INFINITY:表示浮点类型(float)正的无穷大NAN:表示无效数字,即不是一个数FP_INFINITE:表示浮点类型的无穷大FP_NAN:表示无效数据FP_NORMAL:表示正常状态FP_SUBNORMAL:表示异常状态FP_ZERO:表示浮点类型的0FP_FAST_FMA:表示和fma()函数同样的效果FP_FAST_FMAF:表示浮点类型的FP_FAST_FMAFP_FAST_FMAL:表示long double类型的FP_FAST_FMAFP_ILOGB0:表示ilogb(x)函数的x参数为0时,函数的返回值FP_ILOGBNAN:表示ilogb(x)函数的x参数为NAN时,函数的返回值MATH_ERRN0:表示数学错误,整数1MATH_ERREXCEPT:表示数学异常错误,整数2

应该使用 NULL 还是 0

C++ 里,NULL 的定义就是 0,所以到底使用哪个只是个审美问题。我个人倾向于避免使用宏,所以我使用 0。还有个问题是,有些人误以为 NULL 和 0 并不相同,并且/或者以为 NULL 不是整数。在标准前的代码里,NULL 有时被定义成不恰当的东西,因此不得不避免使用它。不过现今这已不常见。如果你必须给空指针起个名字,那就叫它 nullptr;C++0x 中将会这么叫。届时,“nullptr”将会是个关键字。

#include作用

本命令包含一个文件并在当前位置插入.两种语法的主要不同之处是在于,如果filename括在尖括号中,那么编译器不知道如何搜索它.如果它括在引号中,那么编译器可以简单的搜索到文件.两种搜索的方式是由编译器决定的,一般尖括号意味着在标准库目录中搜索,引号就表示在当前目录中搜索.Thespiffynew整洁的新C++#include目录不需要直接映射到filenames,至少对于标准库是这样.这就是你有时能够成功编译以下命令的原因

宏定义运用define

语法:

#define macro-name replacement-string
#define命令用于把指定的字符串替换文件中的宏名称.也就是说,#define使编译器把文件中每一个macro-name替换为replacement-string.替换的字符串结束于行末.这里是一个经典的#define应用(至少是在C中):