Menu
Forums
New posts
Search forums
Members
Current visitors
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Menu
Log in
Register
Install the app
Install
Forums
Archive
Archive
C Programming
Convert __DATE__ to unsigned int
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="Martin Dickopp" data-source="post: 1692180"><p>Here is some code which does this. DATE_AS_INT expands to a constant</p><p>expression, so an optimizing compiler should be able to compute its</p><p>value at compile time.</p><p></p><p></p><p>#include <stdio.h></p><p></p><p>#define YEAR ((((__DATE__ [7] - '0') * 10 + (__DATE__ [8] - '0')) * 10 \</p><p> + (__DATE__ [9] - '0')) * 10 + (__DATE__ [10] - '0'))</p><p></p><p>#define MONTH (__DATE__ [2] == 'n' ? 0 \</p><p> : __DATE__ [2] == 'b' ? 1 \</p><p> : __DATE__ [2] == 'r' ? (__DATE__ [0] == 'M' ? 2 : 3) \</p><p> : __DATE__ [2] == 'y' ? 4 \</p><p> : __DATE__ [2] == 'n' ? 5 \</p><p> : __DATE__ [2] == 'l' ? 6 \</p><p> : __DATE__ [2] == 'g' ? 7 \</p><p> : __DATE__ [2] == 'p' ? 8 \</p><p> : __DATE__ [2] == 't' ? 9 \</p><p> : __DATE__ [2] == 'v' ? 10 : 11)</p><p></p><p>#define DAY ((__DATE__ [4] == ' ' ? 0 : __DATE__ [4] - '0') * 10 \</p><p> + (__DATE__ [5] - '0'))</p><p></p><p>#define DATE_AS_INT (((YEAR - 2000) * 12 + MONTH) * 31 + DAY)</p><p></p><p>int main (void)</p><p>{</p><p> printf ("%d-%02d-%02d = %d\n", YEAR, MONTH + 1, DAY, DATE_AS_INT);</p><p> return 0;</p><p>}</p><p></p><p></p><p>Martin</p></blockquote><p></p>
[QUOTE="Martin Dickopp, post: 1692180"] Here is some code which does this. DATE_AS_INT expands to a constant expression, so an optimizing compiler should be able to compute its value at compile time. #include <stdio.h> #define YEAR ((((__DATE__ [7] - '0') * 10 + (__DATE__ [8] - '0')) * 10 \ + (__DATE__ [9] - '0')) * 10 + (__DATE__ [10] - '0')) #define MONTH (__DATE__ [2] == 'n' ? 0 \ : __DATE__ [2] == 'b' ? 1 \ : __DATE__ [2] == 'r' ? (__DATE__ [0] == 'M' ? 2 : 3) \ : __DATE__ [2] == 'y' ? 4 \ : __DATE__ [2] == 'n' ? 5 \ : __DATE__ [2] == 'l' ? 6 \ : __DATE__ [2] == 'g' ? 7 \ : __DATE__ [2] == 'p' ? 8 \ : __DATE__ [2] == 't' ? 9 \ : __DATE__ [2] == 'v' ? 10 : 11) #define DAY ((__DATE__ [4] == ' ' ? 0 : __DATE__ [4] - '0') * 10 \ + (__DATE__ [5] - '0')) #define DATE_AS_INT (((YEAR - 2000) * 12 + MONTH) * 31 + DAY) int main (void) { printf ("%d-%02d-%02d = %d\n", YEAR, MONTH + 1, DAY, DATE_AS_INT); return 0; } Martin [/QUOTE]
Verification
Post reply
Forums
Archive
Archive
C Programming
Convert __DATE__ to unsigned int
Top