分类:
2008-03-13 21:31:34
预处理运算符:#、##、defined
1.字符串化运算符:#
字符串化(stringizing)运算符 # 的作用是:将扩展之后的宏参数转化为字符串常量,该运算符只能用于带参数的宏。
#define p(x) #x
则:p(abcd) 扩展为"abcd"
p("abcd") 扩展为"\"abcd\""
2.加标记运算符:##
加标记(token-pasting)运算符 ## 的作用是:将两个标记联结在一起形成单个的标记。有时也被称为合并运算符(merging operator)。
#include
using namespace std;
#define p(k,i) k##i
int main(int argc,char** argv) { cout< cout< return EXIT_SUCCESS;
int xa=1,xb=2,xc=3;
cout<
}
//-----
1
2
3
//-----
3.符号表查询运算符:defined
#if defined(X) <===> #ifdef X
#if !defined(X) <===> #ifndef X
尽管右边的指令书写起来简单一些, 但 defined 运算符使用起来更为灵活,因为使用它可以把许多测试条件联合起来构成一个表达式,例如:
#if defined(__cplusplus) && !defined (DEBUG)