Мой вопрос похож на Different format of __DATE__ macro , но упомянутые там решения показывают ошибку в моем компиляторе VS 2013.Экстракт только год с даты макрос
Я хочу просто взять год часть от даты макроса, чтобы сделать макрос, который содержит строку, как
#define BUILD_YEAR_CH0 (__DATE__[ 7])
#define BUILD_YEAR_CH1 (__DATE__[ 8])
#define BUILD_YEAR_CH2 (__DATE__[ 9])
#define BUILD_YEAR_CH3 (__DATE__[ 10])
#define COPY "Copyright"
#define COMPANY "ABCD Lmtd"
#define CYC BUILD_YEAR_CH0 BUILD_YEAR_CH1 BUILD_YEAR_CH2 COMPANY
Так что я могу использовать макрос CYC для печати сцепленной строки везде, где обязательный.
Но как только я использую макрос/токен BUILD_YEAR_CH0 в макросе CYC, он показывает ошибку.
Я также попытался сделать константный буфер обугленного, который имеет точное значение года, как
const char MYEAR[] = { __DATE__[7], __DATE__[8],__DATE__[9],__DATE__[10],'\0' };
Но опять же, я не смог использовать его внутри макроса CYC. Неужели это невозможно сделать только с помощью макросов, не используя никаких переменных?
Будет ли 'constexpr' или шаблон функции будет в порядке? –
Зачем беспокоиться о боли, которая является макросами? Почему бы не написать правильную функцию? –
@JesperJuhl Иногда вы хотите встроить компиляцию даты в двоичный файл. –