我使用__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__
怎么了?
什么是宏的“扩展”,它如何是“可再现的”或“不可再现的”,为什么“不可再现的”是坏的?
答案 0 :(得分:38)
如果您不需要在每次构建相同的代码时都生成相同的二进制文件,请禁用该警告。这就是存在命令行开关的原因。
答案 1 :(得分:4)
警告消息告诉您原因。使用宏不会导致可复制的构建,因为其值会随着时间变化。 2018年的版本和2019年的版本将不会生成相同的二进制文件。