功能宏定义接受两个特殊运算符(#和# #)在替换序列:
如果操作者#之前使用的参数是用于替换序列,参数是由一个字符串替换(如果它是包含在双引号)
#define str(x) #x
cout << str(test);
这些指令可以包括或丢弃的一个程序的部分代码,如果满足一定的条件。
#如果定义了允许的第一个程序,只是如果宏被指定为参数已定义的编译,不管它的价值。例如:
在这种情况下,代码int表[ table_size ]线;如果只编译table_size先前定义的#定义,独立于它的价值。如果它没有被定义,这条线将不会包含在程序编译。
#则是完全相反的:# ifndef和#判断指令之间的代码只编译,如果指定的标识符以前没有被定义。例如:
1
2
3
4
#ifndef TABLE_SIZE
#define TABLE_SIZE 100
#endif
int table[TABLE_SIZE];