c++ - 为什么 Clang 不喜欢 __DATE__ 宏?
问题描述
我使用__DATE__
宏来获取编译时年份:
const QString build_year = __DATE__ + 7;
QtCreator 中的 Clang 代码模型会引发使用宏的-Wdate-time
警告。__DATE__
warning: expansion of date or time macro is not reproducible
我可以使用 禁用此警告-Wno-date-time
,但使用 有什么问题__DATE__
?
什么是宏的“扩展”,怎么可能是“可重现”或“不可重现”,为什么“不可重现”不好?
解决方案
从许多角度来看,重复构建复制二进制相同的输出是可取的。从每次提供不同二进制文件的相同工具链构建相同的源代码可能会隐藏严重的问题。
如果您不需要在每次构建相同代码时生成相同的二进制文件,只需禁用该警告。这就是命令行开关存在的原因。
推荐阅读
- vue.js - Vue-Cli:htmlWebpackPlugin 的“标题”选项不起作用
- ms-access - MS Access 在选择查询中使用函数作为条件
- java - 如何修复来自 org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping 的 Class Not Found 异常?
- asp.net-mvc - View 将一些属性作为 null 返回给 Controller
- javascript - 打字稿将单个项目添加到对象数组
- anylogic - tableFunction 是否支持使用参数作为条件?
- mysql - PayPal 的“PNREF”总是 12 个字符吗?
- ruby-on-rails - 如何在每次迭代中获取数组的新副本?
- java - 新命令条目未显示在 xml 文件的上下文菜单中
- java - 如何使用 MongoDB Repository 在 Spring Boot 中搜索不是 Id 的其他事物