位置: IT常识 - 正文

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

发布时间:2024-01-26
背景 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编辑器)

  • bootmgr is conmpressed电脑上怎么解决(bootmgrisconmpressed无法开机怎么办)

    bootmgr is conmpressed电脑上怎么解决(bootmgrisconmpressed无法开机怎么办)

  • 小米k30和k30pro区别有哪些(小米k30pro与k30s)

    小米k30和k30pro区别有哪些(小米k30pro与k30s)

  • 华为p30pro网速慢如何解决(华为p30p网速太慢怎么回事)

    华为p30pro网速慢如何解决(华为p30p网速太慢怎么回事)

  • 淘宝评价会多久过期(淘宝评价多久会自动评价)

    淘宝评价会多久过期(淘宝评价多久会自动评价)

  • 钉钉视频会议可以看回放吗(钉钉视频会议可以用作业帮吗)

    钉钉视频会议可以看回放吗(钉钉视频会议可以用作业帮吗)

  • 不良信息停机怎么恢复(不良信息停机啥意思)

    不良信息停机怎么恢复(不良信息停机啥意思)

  • 酷狗音乐下载后会员到期还能听吗(酷狗音乐下载后文件在哪)

    酷狗音乐下载后会员到期还能听吗(酷狗音乐下载后文件在哪)

  • 苹果通知分组什么意思

    苹果通知分组什么意思

  • 华为nova7pro是双扬声器吗(华为nova7pro是双模吗)

    华为nova7pro是双扬声器吗(华为nova7pro是双模吗)

  • iphone11能否升级5g(iphone11能否升级ios15)

    iphone11能否升级5g(iphone11能否升级ios15)

  • 华为微信信息不显示在屏幕上怎么设置(华为微信信息不亮屏)

    华为微信信息不显示在屏幕上怎么设置(华为微信信息不亮屏)

  • 抖音小号是什么意思(抖音不实名认证可以开小店吗)

    抖音小号是什么意思(抖音不实名认证可以开小店吗)

  • 打印机可以连接手机吗(打印机可以连接苹果手机吗)

    打印机可以连接手机吗(打印机可以连接苹果手机吗)

  • 淘宝买家可以申请几次退款(淘宝买家可以申请几次售后)

    淘宝买家可以申请几次退款(淘宝买家可以申请几次售后)

  • iphone6s卡屏滑动不了(6sp卡屏幕划不动)

    iphone6s卡屏滑动不了(6sp卡屏幕划不动)

  • qq不加好友能发视频吗(qq不加好友能发消息吗)

    qq不加好友能发视频吗(qq不加好友能发消息吗)

  • 拼多多新品活动在哪里报名(拼多多新品活动展现时间是多长)

    拼多多新品活动在哪里报名(拼多多新品活动展现时间是多长)

  • 怎么知道群是谁举报的(怎么知道群是谁创建的)

    怎么知道群是谁举报的(怎么知道群是谁创建的)

  • 华为m6的鼠标怎么连接(华为m6鼠标灵敏度设置)

    华为m6的鼠标怎么连接(华为m6鼠标灵敏度设置)

  • 手机相片怎样编辑文字(手机相片怎样编辑文字竖排)

    手机相片怎样编辑文字(手机相片怎样编辑文字竖排)

  • 华为怎样关闭台后运行(如何关闭华为)

    华为怎样关闭台后运行(如何关闭华为)

  • 紧急联系人怎么删除(紧急联系人怎么拨打)

    紧急联系人怎么删除(紧急联系人怎么拨打)

  • 手机号注销银行卡能用吗(手机号注销银行卡还能打钱进去吗)

    手机号注销银行卡能用吗(手机号注销银行卡还能打钱进去吗)

  • xs和x一样大吗(xs和x大小一样嘛)

    xs和x一样大吗(xs和x大小一样嘛)

  • 滴滴绕路多付款吗(滴滴绕路多付款会怎么样)

    滴滴绕路多付款吗(滴滴绕路多付款会怎么样)

  • 拼多多试用后要归还吗(拼多多试用后要运费么)

    拼多多试用后要归还吗(拼多多试用后要运费么)

  • 微信红包为什么不能领取(微信红包为什么收不了钱)

    微信红包为什么不能领取(微信红包为什么收不了钱)

  • 增值税专用发票可以开电子发票吗
  • 纳税义务发生时间 纳税期限
  • 没房分手的多吗
  • 装修及室内设计实训报告
  • 公司向个人借款不还如何处理
  • 个体户可以不开公户吗?打款到法人卡
  • 个税是每个月都扣吗
  • 现金流量怎么影响股票价值
  • 金蝶数量金额式明细账怎么查看
  • 没有进出口经营权
  • 外购商品用于促销能抵扣吗
  • 促销赠品的会计处理
  • 老板请员工吃饭唯独没叫你是什么意思
  • 民间非营利组织会计制度
  • 少缴纳个人所得税的需要付什么责任
  • 快递费需要计提吗
  • 销售型公司进销项时会计分怎么写?
  • 营改增后手写发票还能用吗
  • 总公司集中支付说明
  • 高新技术企业认定管理办法
  • 无票申报后开发票怎么申报
  • 计提印花税会计分录怎么写
  • 免抵退税额如何计算
  • 固定资产的运费和关税计入什么费用
  • 专项应付款形成资产怎么处理账?
  • 小规模纳税人的增值税账务处理
  • linux系统配置ip地址命令
  • 行政事业单位向企业借款违反了什么规定
  • 车辆拍卖怎么过户
  • 员工意外伤害保险怎么买
  • 红蘑菇是什么松树伞吗
  • 转出未交增值税会计科目
  • linux块设备驱动详解
  • 资金性质是什么有哪些方面
  • 工业企业缴纳的税费种类包括
  • 西西弗书店主管级
  • 金蝶专业版怎么用
  • window cuda
  • phpstudy ftp怎么用
  • 产品检测费可以放入研发费用吗
  • 退役士兵抵税2019
  • 发票跨月还可以作废吗
  • 企业电子发票申请流程2023版
  • 财务报表是指的什么内容
  • 业委会究竟在小区起什么作用
  • 借贷记账法的记账依据是什么
  • 私车公用协议可以过户吗
  • 承兑汇票找公司贴现违法吗
  • 异地预交所得税分录
  • 按照现行会计制度的规定,下列票据中
  • 购买金税盘未抵税怎么办
  • 发行长期债券计入什么科目
  • 银行业务冲正
  • 缴纳文化事业建设费的单位应按照提供广告服务
  • 工程未竣工预付款怎么办
  • 公司购买汽车的购置税可以抵税吗
  • 公司经营范围怎么填
  • XP系统无法安装软件
  • centos7如何设置中文
  • 忘记mysql root密码的解决方法
  • linux操作系统版本有哪些
  • windows7如何启动记事本
  • win10系统虚拟机安装教程win7
  • 如何优化winxp
  • mac图片格式怎么转换jpeg
  • redhat本地yum配置的基本步骤
  • three.js官方文档
  • node.js加密
  • [置顶] 《借.住.情.缘》
  • cocos2dx 3.3 helloworld 入门 学习与详解
  • IE、FF、Chrome浏览器中的JS差异介绍
  • 关于中秋节的古诗
  • jquery的实现原理
  • shell脚本遍历
  • 创建shell脚本命令
  • jquery操作html代码
  • python常用的内置逻辑判断函数
  • 手游炫酷
  • 整备质量吨位数是什么意思
  • 收缴和缴纳的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号