C++ 宏定义有几个特殊字符
- #
可以吧语言符号转化为字符串
#define test(x) #x
printf ("%s", test(100)); // 输出100
// 也可以作为函数的参数,作为一个字符串参数传进去
#define test(x) print(#x)
void print(const char* str)
{
printf("%s\n", str);
}
test(1000); // 输出1000
- ##
可以连接两个语言符号转化成单个语言符号
#define NEW_NAME(name) new_##name
int NEW_NAME(a) = 10;
printf("%d\n", new_a);
- ... 和 VA_ARGS
...放在最后,剩余的参数放到...里,可以通过VA_ARGS使用。
#define PRINT(a, ...) printf(a, __VA_ARGS__)
PRINT("%d %d %d\n", 1, 2, 3);
- 多行宏定义
行末加上 / - 定义和取消
#define [MacroName] [MarcoValue]
#undef [MarcoName]
网友评论