Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74207
  • 博文数量: 21
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 241
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-07 14:05
文章分类

全部博文(21)

文章存档

2011年(1)

2008年(20)

我的朋友

分类:

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) {
    int xa=1,xb=2,xc=3;
    cout<    cout<    cout<    return EXIT_SUCCESS;
}

//-----

1

2

3

//-----


  3.符号表查询运算符:defined

    #if defined(X)        <===>      #ifdef X
    #if !defined(X)       <===>      #ifndef X

  尽管右边的指令书写起来简单一些, 但 defined 运算符使用起来更为灵活,因为使用它可以把许多测试条件联合起来构成一个表达式,例如:

    #if defined(__cplusplus) && !defined (DEBUG)

   

阅读(995) | 评论(0) | 转发(0) |
0

上一篇:#define

下一篇:#error #line

给主人留下些什么吧!~~