位置: 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编辑器)

  • 周天子的无奈(周天子的懦弱)

    周天子的无奈(周天子的懦弱)

  • 华为nova9怎么多机位拍摄(华为nova9怎么多开微信)

    华为nova9怎么多机位拍摄(华为nova9怎么多开微信)

  • ipad如何截图(平板ipad如何截图)

    ipad如何截图(平板ipad如何截图)

  • 安卓9和安卓10区别(安卓9与安卓10)

    安卓9和安卓10区别(安卓9与安卓10)

  • 腾讯视频自动续费怎么取消(腾讯视频自动续费关闭了怎么还续费)

    腾讯视频自动续费怎么取消(腾讯视频自动续费关闭了怎么还续费)

  • 三星s9黑屏(三星s9黑屏但有反应)

    三星s9黑屏(三星s9黑屏但有反应)

  • 回放生成要多久(回放正在生成中什么原因)

    回放生成要多久(回放正在生成中什么原因)

  • 华为手机怎样扫描文件成为电子版(华为手机怎样扫二维码)

    华为手机怎样扫描文件成为电子版(华为手机怎样扫二维码)

  • 快手加入黑名单后对方能看见作品吗(快手加入黑名单关系会解除吗)

    快手加入黑名单后对方能看见作品吗(快手加入黑名单关系会解除吗)

  • havic139耳机怎么连接

    havic139耳机怎么连接

  • 手机怎么打开wim文件(手机怎么打开wim文件视频)

    手机怎么打开wim文件(手机怎么打开wim文件视频)

  • cpu采用的集成电路属于什么集成电路(cpu采用的集成电路是什么)

    cpu采用的集成电路属于什么集成电路(cpu采用的集成电路是什么)

  • 打印机碳粉盒在哪里(惠普打印机加碳粉)

    打印机碳粉盒在哪里(惠普打印机加碳粉)

  • 苹果11pro几个摄像头(苹果11pro有几个摄像头?)

    苹果11pro几个摄像头(苹果11pro有几个摄像头?)

  • 华为p30pro耗电快是什么原因(华为p30pro耗电快二手回收价)

    华为p30pro耗电快是什么原因(华为p30pro耗电快二手回收价)

  • 苹果怎样下is语音(苹果怎样下is语音助手)

    苹果怎样下is语音(苹果怎样下is语音助手)

  • 618返场是什么(2021 618返场)

    618返场是什么(2021 618返场)

  • 钉钉里特别关注在哪里设置(钉钉里特别关注某人,他会知道吗)

    钉钉里特别关注在哪里设置(钉钉里特别关注某人,他会知道吗)

  • 苹果x手机面容识别不了了怎么办(苹果X手机面容id不可用是怎么回事)

    苹果x手机面容识别不了了怎么办(苹果X手机面容id不可用是怎么回事)

  • 荣耀20i有红外吗(荣耀20i有红外线功能吗?)

    荣耀20i有红外吗(荣耀20i有红外线功能吗?)

  • 谷歌浏览器怎么设置flash插件(谷歌浏览器怎么下载)

    谷歌浏览器怎么设置flash插件(谷歌浏览器怎么下载)

  • Win11正式版存在文件资源管理器高内存使用率 Bug,微软正在修复(win11正式版问题)

    Win11正式版存在文件资源管理器高内存使用率 Bug,微软正在修复(win11正式版问题)

  • 【微信小程序】一文带你了解数据绑定、事件绑定以及事件传参、数据同步(微信小程序怎么制作自己的小程序)

    【微信小程序】一文带你了解数据绑定、事件绑定以及事件传参、数据同步(微信小程序怎么制作自己的小程序)

  • 个体工商户工商年报资金数额填啥
  • 小规模纳税人所得税税率是5还是2.5
  • 增值税不交什么后果
  • 财务软件费用可以抵税吗
  • 车票增值税抵扣如何申报
  • 社保怎么进行账单查询
  • 计算错误多缴税怎么处理
  • 预售款计入收入吗
  • 增值税即征即退收入要交企业所得税吗
  • 当年实现的利润弥补亏损会计分录
  • 防伪税控开票系统技术维护费
  • 投资公司的投资人叫什么
  • 实收资本印花税税率多少
  • 材料折扣率
  • 建筑业农民工工资
  • 应收账款多久收回合适
  • 公司出售厂房的增值税允许抵扣吗
  • 营改增后房地产企业如何开票
  • 远程清卡失败f50004
  • 季度有利润可以弥补以前年度亏损吗
  • 开普票可以抵扣进项票
  • 增值税专用发票电子版
  • 企业做账会计需要什么资质
  • 软件后续服务
  • 亏损计提递延
  • wifi认证失败怎么办
  • 不缴或少缴应纳税款的行为属于
  • pc端微信怎么更新
  • 固定资产进项发票
  • 土地长期租赁最长多长时间
  • deepin缩放
  • Windows 11 CO-21H2 22000.194 正式版官方下载地址(附esd微软三语直链下载x64+arm64)
  • 默认网关不可用的解决办法
  • 电脑的nip是什么
  • php数组函数,选班长
  • php自定义函数的语法格式
  • 固定资产的预计使用寿命和净残值发生变更
  • php模板教程
  • nodejs官方文档
  • php封装数据库操作
  • 餐饮服务专票可以抵税吗
  • 文化传媒公司介绍
  • 企业税务分为哪几类
  • sql2012 win10
  • 预提费用在资产负债表中如何列示
  • 应付账款账务处理中的错弊
  • 工业企业成本一般占收入的比例
  • 钉钉财务软件怎么用
  • 出口退税三类企业影响
  • 只要有销售收入就能赚钱
  • 软件开发企业怎么结转成本
  • 收到费用发票分录
  • 关于成本核算的论文
  • 管理费用如何核算
  • 企业尚未给予指定用途
  • 积分换购怎么做账
  • 佣金付给别人公司合法吗
  • 工资费用核算的原始记录有
  • 销项税额和转出未交增值税余额怎么结转
  • 其他应付款属于哪类
  • 固定资产公司
  • 工业企业应付会计工作内容
  • mysqlvarchar汉字
  • windows9怎么截图
  • unix操作系统有哪些主要特色
  • ubuntu virtual box
  • config是什么文件夹
  • executor进程
  • centos8 systemd
  • win7系统玩英雄联盟没有声音
  • win7与xp双系统设置
  • win7系统显卡驱动怎么安装
  • 鼠标双击速度
  • shell脚本实现输出字母个数大于5的单词
  • perl ne
  • nginx日志切割原理
  • 动作手游排行榜2020前十名
  • 一个简单的网页
  • 如何查看自己公司的税种
  • 人工成本占企业利润比例
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设