Почему Clang не нравится макрос __DATE__? - PullRequest
0 голосов
/ 19 октября 2018

Я использую макрос __DATE__ для получения года времени компиляции:

const QString build_year = __DATE__ + 7;

Модель кода Clang в QtCreator выдает предупреждение -Wdate-time об использовании макроса __DATE__.

warning: expansion of date or time macro is not reproducible

Я могу отключить это предупреждение с помощью -Wno-date-time, но что не так с использованием __DATE__?

Что такое «расширение» макроса, как можноэто быть «воспроизводимым» или «не воспроизводимым», и почему «не воспроизводимым» является плохим?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Предупреждающее сообщение говорит вам, почему.Использование макроса не приводит к воспроизводимой сборке, так как его значение будет меняться со временем.Сборка в 2018 году и одна в 2019 году не приведут к одному и тому же двоичному файлу.

0 голосов
/ 19 октября 2018

Повторные сборки воспроизводят двоичные идентичные выходные данные, желательно с многих точек зрения.Создание идентичного исходного кода из идентичных цепочек инструментов, каждый раз выдающих разные двоичные файлы, может скрыть серьезные проблемы.

Если вам не нужно создавать одинаковые двоичные файлы каждый раз, когда вы создаете одинаковый код, просто отключите это предупреждение.вот почему переключатель командной строки существует.

...