(8) Qt 里用于遍历容器的 foreach 函数,其实是一个宏定义,给出其源码

(1)

//摘抄自 QT 的源文件

```cpp
// Use C++17 if statement with initializer. User's code ends up in a else so
// scoping of different ifs is not broken //从以下大概能看出来,是c++ 语言里的 for循环
#define Q_FOREACH_IMPL(variable, name, container)                                             \
    for (auto name = QtPrivate::qMakeForeachContainer(container); name.i != name.e; ++name.i) \
        if (variable = *name.i; false) {} else

#define Q_FOREACH_JOIN(A, B) Q_FOREACH_JOIN_IMPL(A, B)
#define Q_FOREACH_JOIN_IMPL(A, B)   A ## B

#define Q_FOREACH(variable, container) \
    Q_FOREACH_IMPL(variable, Q_FOREACH_JOIN(_container_, __LINE__), container)

#define foreach   Q_FOREACH  // 可见, foreach 函数,是个宏定义,其函数名是个宏名字
#define Q_FOREVER for(;;)

(2)

谢谢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值