1.预处理阶段,先去注释,再宏替换。所以宏替换不能用于去注释。
#define bsc //就变成了一个空的宏。(//在这里面本来就是注释,只是注释后面的内容为空)
2.宏定义并不是简单的无脑替换。
printf(" ")中,双引号里面的东西不能被宏替换。
3.#define INIT_VAL(a,b) a=0;b=0;
这样就用宏实现了赋值。需要注意的是,这个宏替换的是两条语句,如果在if语句中使用这个宏替换,记得加上大括号({})。但是不推荐这样使用。建议使用如下方式。
#define INIT_VAL(a,b) do{a=0;b=0;}while(0);
4.调用上述宏的时候。INIT_VAL ?(a,b)
?处可以带括号。但是不推荐。
5.在文件内,不管宏在哪里定义,都可以被使用。与是否在{}中无关。但是不能在宏定义的上方使用该宏。按照从上往下的顺序,宏定义的地方往后,就是宏的范围。
6.尽量使用函数,不要使用宏定义,不大好调试。
7.
8.
9.
10.