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

  • 关于个人取得的成果
  • 城市维护建设税怎么做分录
  • 礼品的进项税能抵扣吗
  • 企业所得税本年实际缴纳不包括上年汇算清缴补缴税款吗
  • 银行提供资金
  • 收企业利息如何做账
  • 技术转让是指
  • 季度盈利可以弥补以用以前年度亏损弥补
  • 个人挂靠利润如何提取
  • 存货转固定资产的时点
  • 冲减本年利润
  • 公司注销固定资产交什么税
  • 事业单位存货盘盈
  • 那些发票可以报
  • 建筑工程的适用范围
  • 劳务费税率公式是什么
  • 公车私用情形有哪些
  • 老版普通增值税发票还能用吗
  • 税控盘超期还能清卡吗
  • 个税申报所属期和所得期
  • 跨年度错账更正方法
  • 通讯费补贴要交税吗
  • 工程发票开具所需资料有什么?
  • 如何解决win7系统搜不到蓝牙耳机
  • 费用发票可以不上账吗
  • 会计凭证丢失补违规么
  • 设置ahci模式后,开不了机
  • 经销商计提折扣怎么做账
  • 应交增值税的完整计算公式是什么
  • 独立核算的基金是会计主体吗
  • thinkphp smarty
  • 预收账款和应收账款的转换
  • vscode搭建vue项目
  • php array_walk_recursive 使用自定的函数处理数组中的每一个元素
  • 企业所得税应纳税所得额300万以下
  • 其他科技推广服务业可以加计扣除吗
  • 办公费用会计科目怎么写
  • 汇算清缴的所得税怎么做账
  • 开发票的盘锁了
  • 应收账款收不回来做坏账处理分录
  • 税务实名认证是法人还是办税人
  • 政府会计制度应收账款坏账准备
  • 发票类别包含哪几种
  • 固定资产到期后继续使用
  • 小规模纳税人需要每月报税吗
  • 预付账款是属于什么类
  • 什么情况需要预缴
  • 预付账款长期挂账的合理原因
  • 母子公司可以合并吗
  • 新手会计做账怎么做账
  • mac安装mysql
  • win10预览版21277
  • win10+Ubuntu16.04 LTS双系统完美教程(图文教程)
  • win8.1如何关闭开机密码
  • mac系统文件名
  • win8如何开启蓝牙
  • mac与windows的使用区别
  • ghoststarttrayapp.exe是什么进程 有什么作用 ghoststarttrayapp进程查询
  • nomoreporn.exe - nomoreporn是什么进程 有什么用
  • 省去911元 教你如何将Win10家庭版改造成专业版
  • jQuery ajax读取本地json文件的实例
  • JavaScript_ECMA5数组新特性详解
  • linux系统中可用于添加用户账号
  • node远程ssh
  • python清除运行结果
  • 编写折半查找的程序
  • wow 脚本开发
  • node.js 教程
  • nodejs json数据库
  • 狗刨好学吗
  • python 二叉堆
  • js调用键盘
  • python如何获取系统绝对路径
  • 税务总局33号公告
  • 交通费用包括
  • 重庆税务登记证在哪里办理
  • 贵州开票软件怎么下载安装
  • 税务上门核查要看什么
  • 黄金增值税管理难点
  • 开健身会所国家有补贴吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设