##作用?

#define F abc
#define B def
#define FB(arg) #arg
#define FB1(arg) FB(arg)
//#define FB2(F B) FB(arg)

#define f(a, b) a##b
#define g(a) #a
#define h(a) g(a)
//考察字符串化操作符#得作用得执行过程,以及宏定义替换的次序。//如果该宏为带#号的宏定义,则直接替换字符串,无需再嵌套替换,
//如果该宏不是带#的宏,则先替换括号内部的宏定义,然后替换外部的。

#define warn_if(x)\
do{\
 if(x)\
        printf("warn "#x"\n");\
}while(0);

#define MS( x ) Stud##x

#define STRING(x) #x#x#x
#define TEXT(x) "class"#x"Info"

#define cat(a,b) a ## b
#define ff(a) fff a
#define ab AB


    char *a = "hello," "world";
    qDebug()<<strlen(a);
    /*
    11
    */

    qDebug()<<FB(1+2);
    qDebug()<<FB1(1+2);
    /*
    1+2
    1+2
    */

    //考察字符串化操作符#得作用得执行过程,以及宏定义替换的次序。
    //如果该宏为带#号的宏定义,则直接替换字符串,无需再嵌套替换,
    //如果该宏不是带#的宏,则先替换括号内部的宏定义,然后替换外部的。
    qDebug()<<h(f(1,2));
    qDebug()<<g(f(1,2));
    /*
    12
    f(1,2)
    */

    int eric=3;
      warn_if(eric==3);
    /*
    warn eric==3
    */

    qDebug()<<h(1+2);
    qDebug()<<g(1+2);
    /*
    1+2
    1+2
    */

    int abc = 100;
    qDebug()<<STRING(abc);
    qDebug()<<TEXT(abc);
    /*
    abcabcabc
    classabcInfo
    */

    //报错
//    qDebug()<<cat(cat(1,2),3);
//    qDebug()<<cat(a,b);
//    qDebug()<<ff(cat(cat(1,2),3));

//    qDebug()<<QString::asprintf("%s", 10);  //不打印

    qDebug()<<cat(1,2);
    /*
    12
    */

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值