Skip to content

Commit 8b661f9

Browse files
committed
tolerate compilers that don't use numbers for leading zeros in __DATE__
- i.e. no "Mmm dd yyyy" format, but e.g. "Jun 4 2023" ("Mmm d yyyy") - https://en.cppreference.com/w/cpp/preprocessor/replace#Predefined_macros
1 parent 3ab1453 commit 8b661f9

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

helper/Version.h

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@
1717

1818
#define BUILD_YEAR \
1919
( \
20-
(__DATE__[ 7] >= '0' && __DATE__[ 7] <= '9' && \
21-
__DATE__[ 8] >= '0' && __DATE__[ 8] <= '9' && \
22-
__DATE__[ 9] >= '0' && __DATE__[ 9] <= '9' && \
23-
__DATE__[10] >= '0' && __DATE__[10] <= '9') ? \
24-
(__DATE__[7] - '0') * 1000 + (__DATE__[8] - '0') * 100 + (__DATE__[9] - '0') * 10 + __DATE__[10] - '0' : UINT32_MAX \
20+
(__DATE__[10] >= '0' && __DATE__[10] <= '9') ? \
21+
(__DATE__[ 7] >= '0' && __DATE__[ 7] <= '9' ? (__DATE__[7] - '0') * 1000 : 0) + \
22+
(__DATE__[ 8] >= '0' && __DATE__[ 8] <= '9' ? (__DATE__[8] - '0') * 100 : 0) + \
23+
(__DATE__[ 9] >= '0' && __DATE__[ 9] <= '9' ? (__DATE__[9] - '0') * 10 : 0) + (__DATE__[10] - '0') : UINT32_MAX \
2524
)
2625
static_assert(BUILD_YEAR != UINT32_MAX, "indeterminate build year");
2726

@@ -45,9 +44,8 @@ static_assert(BUILD_MONTH != UINT32_MAX, "indeterminate build month");
4544

4645
#define BUILD_DAY \
4746
( \
48-
(__DATE__[4] >= '0' && __DATE__[4] <= '9' && \
49-
__DATE__[5] >= '0' && __DATE__[5] <= '9') ? \
50-
(__DATE__[4] - '0') * 10 + __DATE__[5] - '0' : UINT32_MAX \
47+
(__DATE__[5] >= '0' && __DATE__[5] <= '9') ? \
48+
(__DATE__[4] >= '0' && __DATE__[4] <= '9' ? (__DATE__[4] - '0') * 10 : 0) + (__DATE__[5] - '0') : UINT32_MAX \
5149
)
5250
static_assert(BUILD_DAY != UINT32_MAX, "indeterminate build day");
5351

0 commit comments

Comments
 (0)