C++语言程序设计

简单的宏定义和const语句都可以用来定义符号常量，但是两者又有许多不同之处：
（1）#define命令定义的符号不具有类型，它仅仅是被另一个字符串替换罢了，而const产生的符号常量是具有类型的。例如：
const int SIZE=80;
说明SIZE是一个int型的常量，而#define命令仅产生文本替换。
（2）两者定义的符号常量的作用域是不同的。在函数体内用const定义的常量是局部常量，其作用域仅限于该函数体。而用#define定义的常量的作用域是从定义命令之后到本源文件结束，可以用"#undef"命令终止宏定义的作用域。下图可形象的说明用#define定义的常量的作用域：

#define A 10
function()
{
…… A的有效范围
……
……
}
#undef A
function2()
……
……

A的有效范围

（3）const语句必须以分号结束，而用#define定义常量是一个预处理命令，结尾一般没有分号。
事实上，用const定义常量比用define定义常量要好。C语言中没有用const定义常量的功能，常量要用define定义。C++为了与C语言兼容，也允许用define定义常量。
下面是一些比较常见的宏定义错误：
★#define A=10
不应该用等号连接，而应该用空格分开，正确写法为：
#define A 10
思考：#define A=10的效果是什么？
★#define A 10;
预处理不用分号结束，这样定义的结果是A所定义的符号常量不是整数10，而是内容为"10;"的一个字符串。正确的写法为：
#define A 10
★#define A10 #define B20
每条预处理命令必须单独占用一行，正确的写法应该是：
#define A 10
#define B 20
宏名一旦定义，就可以嵌套使用，成为其它宏定义的一部分。例如，下面代码定义了ONE，TWO以及THREE的值：
#define ONE 1
#define TWO ONE+ONE
#define THREE ONE+TWO