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

  • 企业所得税法允许税前扣除的费用划分为
  • 外币账户单位基本情况表
  • 进项税多久有效
  • 转让费和押金的区别
  • 无息贷款合同要按手印吗
  • 利润表没有资产减值损失这一栏,需要增加吗
  • 期末资产负债
  • 报税盘金税盘领的发票能通用吗
  • 税控设备抵减增值税会计处理
  • 房屋出租怎么交税?
  • 房地产老项目增值税简易计税
  • 成本暂估跨年度要怎么处理?
  • 公司牌车还款从哪里扣款
  • 残料的会计分录
  • 什么费用需要进行摊销
  • 超过一年的保证金怎么交个税
  • 利息可以开专票
  • 私营企业所得税是多少
  • 高新技术企业所得税税率
  • 房屋转租收入会计分录
  • 甲供工程会计分录
  • 浅谈收入与成本的关系
  • 发票金额大于付款金额怎么入账
  • 收到委托代销清单,确认收入的会计分录
  • 网易打不开怎么退出游戏
  • win10专业版如何激活
  • 上月发生的费用本月报销记账
  • 汽车销售公司购买车辆会计科目
  • 发工资扣的个人社保计入哪个科目
  • dedecms主页修改
  • php中array怎么用
  • 金融企业财务规则(征求意见稿)
  • vscode eslint vue
  • vue绑定css样式
  • zendframework3
  • php获取操作系统
  • 自己组装产品再卖掉
  • 程序员的表白情书
  • 微软回应
  • springcloud阿里巴巴
  • thinkphp codeigniter
  • 建筑业成本核算流程
  • css选择器怎么用
  • 小规模纳税人能开6%增值税专用发票吗
  • 企业扣税方式
  • 专项扣除三险一金是哪三险
  • 免征增值税和增值税免税
  • Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)
  • 新会计准则有哪三个
  • 期初余额调整怎么做凭证
  • sqlserver存储过程加密
  • 已经经营中的企业有哪些
  • 赠送给客户的商品是否要计入费用?
  • 购买材料收到普票怎么做会计分录
  • 价外费用延期付款利息
  • 开会旅游的费用是多少
  • 研发费用属于哪类会计科目
  • 银行存款日记账与银行对账单之间的核对属于
  • 贷款指标是什么意思
  • 公司固定资产如何核算
  • 低值易耗品有哪些种类
  • SQL中distinct 和 row_number() over() 的区别及用法
  • freebsd使用
  • mac连不上无线网络
  • 电脑找不到关机选项了怎么关机
  • win7系统怎么禁用数字签名
  • linux分区顺序详解
  • apache2使用
  • vue组件生命周期执行顺序
  • javascript面向对象编程 PDF
  • 创业要看的书
  • unity manifest
  • canvas实例
  • jqueryui draggable
  • bpc什么时候进入中国
  • 个体工商户税务申报怎么操作流程
  • 企业未开立基本存款账户承诺书的相关规定
  • 云南省残疾人就业服务中心官网
  • 存在未申报记录
  • 2020年南通居民医保缴费标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设