首页 > 解决方案 > 为什么 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__

什么是宏的“扩展”,怎么可能是“可重现”或“不可重现”,为什么“不可重现”不好?

标签: c++clangqt-creator

解决方案


从许多角度来看,重复构建复制二进制相同的输出是可取的。从每次提供不同二进制文件的相同工具链构建相同的源代码可能会隐藏严重的问题。

如果您不需要在每次构建相同代码时生成相同的二进制文件,只需禁用该警告。这就是命令行开关存在的原因。


推荐阅读