基本格式:
- #define <宏名> (<参数表>) <宏体>
- 例: #define A(x) x
宏定义实际上是直接把代码中与宏名相关的关键字直接替换为宏体后才运作
良好的习惯
1 宏体最外面要加括号,反例:
- #define N 2+2
- void main()
- {
- int a=N*N;
- printf(“%d”,a);
- }
2 宏体里的变量也要加括号,反例:
- #define area(x) x*x
- void main()
- {
- int y = area(2+2);
- printf(“%d”,y);
- }
- 因为x没有加括号所以系统认为是y=area(2+2)=2+2*2+2=8
应该写成
- #define area(x) ((x)*(x))
如果是自己编程使用宏替换,则在使用简单宏定义时,当字符串中不只一个符号时,加上括号表现出优先级,如果是带参数的宏定义,则要给宏体中的每个参数加上括号,并在整个宏体上再加一个括号。
特殊用法:
- #define Conn(x,y) x##y 返回x和y拼接在一起的整体,如果俩int拼起来就是高位x低位y的int,否则应该都是字符数组
- #define ToChar(x) #@x 在x的前面和后面加上单引号
- #define ToString(x) #x 在x的前面和后面加上双引号