Печатать дату и время в сборке Visual Studio C ++?
-
03-07-2019 - |
Вопрос
Как бы мне напечатать дату и время для целей сборки?Т. е.:Когда консоль для моего приложения запустится, я хочу сделать это:
Binary Build date: 03/03/2009 @ 10:00AM
Я думаю, что это было бы очень полезной функцией для всех приложений, которую можно было бы иметь за кулисами для программистов, особенно в командной среде.
Есть ли простой способ сделать это с помощью Visual Studio 2008 на C ++?Спасибо.
Решение
Используйте препроцессор __DATE__
и __TIME__
.
printf("Binary build date: %s @ %s\n", __DATE__, __TIME__);
Чтобы убедиться, что cpp-файл, содержащий этот код, действительно скомпилирован, я использую touch-utility для file в качестве этапа предварительной сборки:прикосновение file.cpp
Прикосновение.летучая мышь:
@copy nul: /b +%1 tmp.$$$
@move tmp.$$$ %1
Другие советы
Вы можете использовать макросы __TIME__
и __DATE__
.Обратите внимание на двойные подчеркивания.Они разворачиваются во время компиляции, и, следовательно, вы получите время последней компиляции, сохраненное в вашем файле (файлах).
Обратите внимание, что макросы time и date работают должным образом только в том случае, если конкретный файл, содержащий их, гарантированно компилируется при каждой сборке.
Одним из способов сделать это было бы использование встроенного __DATE__
и __TIME__
макросы.Из MSDN (для версии 2005):
__DATE__
:Дата компиляции текущего исходного файла.Дата представляет собой строковый литерал формы Ммм дд гггг.Название месяца Mmm такое же, как и для дат, генерируемых библиотечной функцией asctime, объявленной в TIME.H.
__TIME__
:Самое последнее время компиляции текущего исходного файла.Время представляет собой строковый литерал вида чч:мм:сс.
Подобно ответу Вирне, я создал простой заголовочный файл под названием "BuildDate.h" со следующим содержимым:
#define BUILD_DATE __DATE__ " " __TIME__
Я прикасаюсь к файлу, используя GnuWin32 коснитесь команды в моем событии предварительной сборки:
touch.exe BuildDate.h
Затем я включаю заголовочный файл в любой код, где я хочу получить доступ к BUILD_DATE
струна.Например.:
#include "BuildDate.h"
...
logger->Log("Build Date: " BUILD_DATE);