C++宏魔法:__VA_OPT__操作

在阅读chromium源码的时候,在\blink render core的base\check.h头文件中,发现了这个定义:

#define CHECK(condition, ...)                                              \
  LOGGING_CHECK_FUNCTION_IMPL(                                             \
      ::logging::CheckError::Check(#condition __VA_OPT__(, ) __VA_ARGS__), \
      condition)

#define PCHECK(condition)                                                \
  LOGGING_CHECK_FUNCTION_IMPL(::logging::CheckError::PCheck(#condition), \
                              condition)

其中 __VA_OPT__ 引起了我的注意。

什么是__VA_OPT__

__VA_OPT__ 被设计用于处理可变参数宏(variadic macros)中的逗号插入或移除问题。
这个宏是在C++20标准中引入的,用于解决在可变参数宏中逗号操作的不确定性,特别是在需要条件性地添加或去除逗号的情况下。

可变参数宏简介

在C++中,可变参数宏允许宏接受不定数量的参数。它们由 _VA_ARGS_ 标识符标识,代表了宏调用中传递的所有额外参数。在C++11中,我们可以这样定义一个可变参数宏:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值