一 宏
(1). 宏的用途
C++中可以使用预处理命令创建宏。而宏的主要用途有,
- 宏替换
- 条件编译
(2). 宏替换
宏替换是指将代码中的字符,预处理时替换为指定字符串。 C++中使用预处理命令 #define 定义宏替换。其语法为:
- #define <宏名> <字符串>
- #define <宏名> (<参数表>) <宏体>
C++中的宏替换是
将引用宏名的地方直接替换为其后的字符串,而不做其他处理。如下边的示例,其中 宏N只是用宏N定义的字符串 替换和填充了 N所在的位置,宏替换完成后其代码为 a = 2+2 * 2+2 = 8
#define H 2+2
void main()
{
int a=N*N;
cout << a << endl;
// 8
}
虽然有参数的宏看起来像函数调用,但其实质还是简单的字符替换,
#define
H(a,b) a+b
void main()
{
cout << 8*
H(3,5) << endl;
// == 8 * 3+5
}
(3). 宏替换中的三个特殊符号
预处理命令 #define 中可以使用 3 个 特殊符号: #,##,#@
- #x 表示使用双引号包围x
- #@x 表示使用单引号包围x
- x##y 表示连接两个参数, 如 12##34 = 1234
#define
VARTOSTRING (n) cout <<
#n" = " << n
....
int num = 456;
VARTOSTRING (num);
// return: num = 456;
特殊符号 ##也很有用,比如有时需要使用宏将现有变量名替换为其他名称 ,这时就需要用到 特殊符号 ##,