C++ define 学习随笔

看QT源码QStringLiteral定义时 对C++#define用法产生疑惑

define QStringLiteral(str) \

([]() -> QString { \
    enum { Size = sizeof(QT_UNICODE_LITERAL(str))/2 - 1 }; \
    static const QStaticStringData<Size> qstring_literal = { \
        Q_STATIC_STRING_DATA_HEADER_INITIALIZER(Size), \
        QT_UNICODE_LITERAL(str) }; \
    QStringDataPtr holder = { qstring_literal.data_ptr() }; \
    const QString qstring_literal_temp(holder); \
    return qstring_literal_temp; \
}()) \
通过查阅资料初步总结:

#include
using namespace std;
#define ToString(a) #a // # 将 a 转换为"a"
#define Conn(x,y) x##y //## 起一个连接作用,把跟在后面的参数转成一个字符串
#define makechar© #@c //字符化操作符 X只能是单字符
#define Dec(x,y) (x-y)
#define A(a,b,c) {a=1;
b+=1;
c=3;
a+b+c;} // \符合为换行符
//#define A(a,b,c) ({a=1;b+=1;c=3;a+b+c;}) //#define xxx() ({}) 最后一个式子的返回值作为宏函数的返回值 只GCC下可用。
int main()
{
int ii=999;
string str=ToString(ii); //string=“ii”
int num=Conn(123,234); //将会扩展成 123234;
string s=Conn(“qwer”,“asdf”); //s=“qwerasdf”
char cchar = makechar(1); //c=‘1’
int i=Dec(7,5); //i=2
int a;
int b=2;
int c;
A(a,b,c);
return 0;
}
///#define BEGIN_INTERFACE_PART(localClass, baseClass)
class X##localClass : public baseClass \

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值