1.在#define中使用参数
函数调用和宏调用之间的重要差异,程序运行时,函数调用把参数的值传递给函数。而编译前,宏调用把参数的语言符号传递给程序。
2.#运算符:利用宏参数创建字符串
如果x是一个宏参数,那么#x可以把参数名转换为相应的字符串,该过程称为字符串化。
#include <stdio.h>
#define POUT(x) printf("---" #x "---\n")
int main()
{
POUT(Test_Define_# .);
return 0;
}
---Test_Define_# .---
3.##运算符:预处理器的粘合剂
这个运算符把两个语言符号组合成单个语言符合。
#include <iostream>
#define INT(x) nTmp##x
int main()
{
int INT(1) = 0;
std::cout<<INT(1)<<std::endl;
return 0;
}
0