#ifndef xxx//如果没有定义xxx "N:]d*A\
#define xxx//定义xxx !<^j!'2
#endif //结束如果 t:@A)ip
这个用法主要是在头文件中,主要是为了防止类重复的include,所以在类的头文件之前加上前面两个,用类名替代xxx,在最后加上最后一句。 jJQfCOD$
{rJF)\2
-------------------------------------------------- n[S*gX0
UlZ)|Ya<M
另,谢谢楼下的补充,不过有一点要注意的是,在C++里面中,尽量不要使用#define定义常量。见: /@}# KP=
9@>hm>g.
5.1 为什么需要常量 ]x{ H
如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦? B-p5;h>
$zA[5}{ZtQ
(1) 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。 DmA!+
MZMv.OeYt,
(2) 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。 {j4:.fD
<;Z~ vZ]
(3) 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。 WjxBNk'f
;j\$[4W.i
n8D;6#P^
O.f3 (e!
l 【规则5-1-1】 尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串。 5*'N Q010
sWzXl~JbF
例如: Vk=<,<BB
A/6nVn
#define MAX 100 /* C语言的宏常量 */ f5XcBW9E
`X03Q[:q"[
const int MAX = 100; // C++ 语言的const常量 X
\ZUt
>
s/|'1E\F
const float PI = 3.14159; // C++ 语言的const常量 g
{wPw
hUvH
t+d
5.2 const 与 #define的比较 #yOY&W:N
C++ 语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点: *"L:"i`*$
\>k#]4@rp
(1) const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。 J-?(sjIX
%Ne>'252y
(2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。 6>7LFV1tvy
A^7Zy79
rxA)&