宏定义
1.定义符号常量
#define PI 3.1415926
#define Max_N 10000000
上面两个例子,分别定义了一个常量
并在以后的编译中,将PI看作3.1415826
将Max_N看作10000000
2.定义傻瓜表达式
#define Max(a,b) (a) > (b) ? (a) : (b)
#define s(a,b) a * b
上面的第一个例子,定义了一个Max(a,b)。
在你以后的编译中
Max(a,b)将被看作(a) > (b) ? (a) : (b)
但是注意,这个东西有点呆
他看起来不太聪明的亚子:
第二个例子,s(a,b)将被看为a*b
所以s(3,5)将被看为3*5
好像没什么问题?
可是…
s(3+4,5+6)
会被看为
3+4*5+6…
3.定义代码段
#define P(a){\
printf("%d\n",a);\
}
这样可以定义一个代码段,其后的\是一个链接符
P(a)在后续的编译中会自动被看作printf(“%d\n”,a);
所以说,上面那个例子
P(a)会被自动看为printf(“%d\n”,a);
(注意上面有分号)
所以在你的调用中,直接写
P(a)
就可以。
但是建议还是写成
P(a);
毕竟…
这样,您也能通过编译:
int a;;;;;;;;;;;;;;;;;
cin >> a;;;;;;;;;;;;;;
cout << a;;;;;;;;;;;;;
分号又不要钱,多打一个,咋的?
·········································································································································
| 【源码】----->【编译源码】----->【对象文件】----->【可执行程序】 |
·········································································································································