位置: IT常识 - 正文

通过宏封装实现std::format编译期检查参数数量是否一致(怎么实现宏的功能)

编辑:rootadmin
背景 std::format在传参数量少于格式串所需参数数量时,会抛出异常。而在大部分的应用场景下,参数数量不一致提供编译报错更加合适,可以促进我们更早发现问题并进行改正。 最终效果 // 测试输出接口。 template <typename... T> void Print(const std:: ... 背景

推荐整理分享通过宏封装实现std::format编译期检查参数数量是否一致(怎么实现宏的功能),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:如何用宏,使用宏定义,使用宏的过程,使用宏可以,excel宏封装成exe,如何将vba宏封装成程序,如何将vba宏封装成程序,如何将vba宏封装成程序,内容如对您有帮助,希望把文章链接给更多的朋友!

通过宏封装实现std::format编译期检查参数数量是否一致(怎么实现宏的功能)

std::format在传参数量少于格式串所需参数数量时,会抛出异常。而在大部分的应用场景下,参数数量不一致提供编译报错更加合适,可以促进我们更早发现问题并进行改正。

最终效果// 测试输出接口。template <typename... T>void Print(const std::string& _Fmt, const T&... _Args){ cout << std::vformat(_Fmt, std::make_format_args(_Args...)) << endl;}// 封装宏,实现参数数量一致的检查#define PRINT(fmt, ...) \ do { static_assert(GetFormatStringArgsNum(fmt) == decltype(VariableArgsNumHelper(__VA_ARGS__))::value, "Invalid format string or mismatched number of arguments"); Print(fmt, __VA_ARGS__); } while(0)int main(){ PRINT("{}", "hello"); PRINT("{} {}", "hello"); return 0;}

上例代码中,使用PRINT宏封装了Print函数,后续使用PRINT进行控制台输出,如果出现参数数量不一致,将产生编译报错:Invalid format string or mismatched number of arguments。

所用技术

静态断言: static_assert

格式串参数数量获取: GetFormatStringArgsNum,该接口

本文链接地址:https://www.jiuchutong.com/zhishi/310728.html 转载请保留说明!

上一篇:python PaddleOCR库的介绍

下一篇:phpcms不能生成首页怎么办(phpcms编辑器)

  • 苹果手机怎么下载歌曲做铃声(苹果手机怎么下载两个微信)

    苹果手机怎么下载歌曲做铃声(苹果手机怎么下载两个微信)

  • windows11录屏怎么操作(windows11录屏怎么隐藏鼠标)

    windows11录屏怎么操作(windows11录屏怎么隐藏鼠标)

  • 拼多多如何注销实名认证(拼多多如何注销店铺重新开)

    拼多多如何注销实名认证(拼多多如何注销店铺重新开)

  • word中显示制表符的方法是什么(word2016怎么显示制表符)

    word中显示制表符的方法是什么(word2016怎么显示制表符)

  • b站视频怎么下载到手机本地(b站视频怎么下载到电脑)

    b站视频怎么下载到手机本地(b站视频怎么下载到电脑)

  • 拼多多怎么换账号登录(拼多多怎么还款)

    拼多多怎么换账号登录(拼多多怎么还款)

  • ipad下载爱奇艺怎么不是全屏(ipad下载爱奇艺hd版还是正常版)

    ipad下载爱奇艺怎么不是全屏(ipad下载爱奇艺hd版还是正常版)

  • 抖音怎么注册企业蓝V(抖音怎么注册企业微信)

    抖音怎么注册企业蓝V(抖音怎么注册企业微信)

  • 运动控制卡和plc区别(运动控制卡和plc哪个便宜)

    运动控制卡和plc区别(运动控制卡和plc哪个便宜)

  • mate30pro防抖怎么开(华为mate30pro防抖设置)

    mate30pro防抖怎么开(华为mate30pro防抖设置)

  • kindle出现感叹号电池(kindle出现感叹号怎么开机)

    kindle出现感叹号电池(kindle出现感叹号怎么开机)

  • 如何进行页面设置(页面设置操作步骤)

    如何进行页面设置(页面设置操作步骤)

  • 苹果8p还能用几年(苹果8p还能用多少年)

    苹果8p还能用几年(苹果8p还能用多少年)

  • icloud注销是什么意思(注销icloud出错是怎么回事)

    icloud注销是什么意思(注销icloud出错是怎么回事)

  • vivoy66怎么储存到sd卡(vivoy66i怎么储存到sd卡)

    vivoy66怎么储存到sd卡(vivoy66i怎么储存到sd卡)

  • 微信联系人删除怎么恢复聊天记录(微信联系人删除了电脑还可以查记录吗)

    微信联系人删除怎么恢复聊天记录(微信联系人删除了电脑还可以查记录吗)

  • 服务器和电脑主机的区别(服务器和电脑主机哪种玩游戏好)

    服务器和电脑主机的区别(服务器和电脑主机哪种玩游戏好)

  • 支付宝怎样关闭刷脸(支付宝怎样关闭自动续费)

    支付宝怎样关闭刷脸(支付宝怎样关闭自动续费)

  • 微信直播视频如何下载(微信直播视频如何投屏到电视机)

    微信直播视频如何下载(微信直播视频如何投屏到电视机)

  • oppor11设置通话音量(oppor11通话设置在哪里找到)

    oppor11设置通话音量(oppor11通话设置在哪里找到)

  • 电脑空格键是那个(电脑中空格键是哪个)

    电脑空格键是那个(电脑中空格键是哪个)

  • 电信4g+是什么意思(电信4g+是什么频段)

    电信4g+是什么意思(电信4g+是什么频段)

  • iqoo开发者选项在哪(iqoo开发者选项怎么恢复默认)

    iqoo开发者选项在哪(iqoo开发者选项怎么恢复默认)

  • 华为手机搬家在哪(华为手机搬家在哪里找出来)

    华为手机搬家在哪(华为手机搬家在哪里找出来)

  • 增值税专用发票的税率是多少啊
  • 有会计从业资格证还有用吗
  • 连号发票不许报销的具体发票类型
  • 软件产品出口退税条件
  • 简易计征开什么发票
  • 计算应交消费税需要扣除代收代缴消费税吗
  • 公司车辆转让需要缴纳印花税吗
  • 预支的采购备用金是什么
  • 股东转让股权印花税怎么交税
  • 佣金支付方式有哪几种
  • 空白发票作废后验旧显示不了
  • 开专票附加8个税点怎么计算?
  • 增值税专票盖章盖在哪里
  • 分摊的水费应取得何种扣除凭证
  • 进口采购交的增值税
  • windows10如何重置密码
  • 不是公司员工差评怎么写
  • 如何修改去年的智慧团建评议结果
  • 买车的收费项目详细清单
  • php中字符串函数
  • 采购合同付款违约条款怎么签
  • 应交增值税的处理
  • phpunicode
  • 捐赠与赞助
  • linux 引导
  • PHP:pg_connection_busy()的用法_PostgreSQL函数
  • 未分配利润进行利润分配分录
  • vue antdesign
  • php实验报告
  • 减值测试的资产有哪些
  • php用mysql连接数据库并查询
  • 实收资本印花税税率多少
  • ssh远程登录执行命令
  • 金蝶迷你版怎么安装
  • 中标费用入什么科目
  • 进项大于销项怎么办
  • 增值税发票作废后怎么处理
  • 一般户可以转账给员工报销吗
  • 无形资产商标设计图片
  • 医疗服务增值税税率
  • 如何在sql server中打开已有数据库
  • 给个体工商户打工受伤怎么办
  • mysql常用命令有哪些
  • 公司车辆过户给个人需要多少费用
  • 研发费用明细科目怎么填
  • 品种法分批法分步法的区别
  • 购进固定资产没有发票怎么入账
  • 商业企业库存商品成本核算
  • 银行承兑汇票到期未承兑怎么办
  • 新医院会计制度什么时候实施
  • 企业存货计价方法发生变更案例
  • csv数据量太大怎么拆分
  • 数据库sql server
  • 详谈是什么意思
  • bios设置的完整说法
  • Xp系统设置ip地址
  • centos yum报错
  • fedora系统安装教程
  • mac闹钟app
  • u盘安装win7系统教程图解
  • xp桌面底部任务在右边
  • ddriver进程
  • 解决win10蓝屏
  • scchost.exe - scchost是什么进程 有什么用
  • Win7系统如何打开磁盘管理工具
  • win7如何更改欢迎界面
  • Win10预览版拆弹
  • win8怎么更新到win8.1
  • linux挂载啥意思
  • linux git管理工具
  • cocos2dx入门
  • js修改css样式属性不生效
  • cocos2dx 3.3 quick lua 实现返回键退出程序
  • js原型继承和构造继承
  • unity导出ios项目到iphone
  • jquery基础知识梳理
  • python拷贝列表
  • 怎样提高增值税税率
  • 车辆营运证去哪里审
  • 日本海淘推荐
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设