with gcc-arm-none-eabi-7-2017-q4-major the default typedef of time_t is "long long int". older releases typedef time_t as "long int". mbed lib cannot handle this correctly This applies to exported projects as "GCC (ARM-Embedded)"
Fork of USBSerial_HelloWorld by
main.cpp@10:ee0528f8d38e, 2018-02-07 (annotated)
- Committer:
- bomilkar
- Date:
- Wed Feb 07 10:30:36 2018 +0000
- Revision:
- 10:ee0528f8d38e
- Parent:
- 9:d88699a0905a
This testcase demonstrates the incompatibility of time_t when using gcc-arm-none-eabi-7-2017-q4-major.; The symptom is apparent with "sizeof(time_t)"; The 2017-q4 release shows 8 "long long int"; Older releases show 4 "long int"
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
samux | 7:5e693654d5b4 | 1 | #include "mbed.h" |
bomilkar | 10:ee0528f8d38e | 2 | |
bomilkar | 10:ee0528f8d38e | 3 | #define SERIAL_TX PA_9 |
bomilkar | 10:ee0528f8d38e | 4 | #define SERIAL_RX PA_10 |
bomilkar | 10:ee0528f8d38e | 5 | Serial pc(SERIAL_TX, SERIAL_RX, 115200); |
bomilkar | 10:ee0528f8d38e | 6 | |
bomilkar | 10:ee0528f8d38e | 7 | int main(void) |
bomilkar | 10:ee0528f8d38e | 8 | { |
bomilkar | 10:ee0528f8d38e | 9 | time_t t; |
bomilkar | 10:ee0528f8d38e | 10 | struct tm *tx; |
bomilkar | 10:ee0528f8d38e | 11 | |
bomilkar | 10:ee0528f8d38e | 12 | pc.printf("++++++++++++++++++++++\nsizeof(time_t) = %d\n++++++++++++++++++++++\n",sizeof(time_t)); |
bomilkar | 10:ee0528f8d38e | 13 | |
bomilkar | 10:ee0528f8d38e | 14 | time(&t); |
bomilkar | 10:ee0528f8d38e | 15 | pc.printf("read RTC: %u\n",(int)t); |
bomilkar | 10:ee0528f8d38e | 16 | tx = localtime(&t); |
bomilkar | 10:ee0528f8d38e | 17 | pc.printf("ctime: %s", ctime(&t)); |
bomilkar | 10:ee0528f8d38e | 18 | pc.printf("T: %d:%d:%d D: %d.%d.%d X: %d\n", |
bomilkar | 10:ee0528f8d38e | 19 | tx->tm_hour,tx->tm_min,tx->tm_sec, |
bomilkar | 10:ee0528f8d38e | 20 | tx->tm_mday,tx->tm_mon+1,tx->tm_year+1900, |
bomilkar | 10:ee0528f8d38e | 21 | tx->tm_isdst); |
bomilkar | 10:ee0528f8d38e | 22 | |
bomilkar | 10:ee0528f8d38e | 23 | pc.printf("t = 0\n"); |
bomilkar | 10:ee0528f8d38e | 24 | t = 0; |
bomilkar | 10:ee0528f8d38e | 25 | tx = localtime(&t); |
bomilkar | 10:ee0528f8d38e | 26 | pc.printf("ctime: %s", ctime(&t)); |
bomilkar | 10:ee0528f8d38e | 27 | pc.printf("T: %d:%d:%d D: %d.%d.%d X: %d\n", |
bomilkar | 10:ee0528f8d38e | 28 | tx->tm_hour,tx->tm_min,tx->tm_sec, |
bomilkar | 10:ee0528f8d38e | 29 | tx->tm_mday,tx->tm_mon+1,tx->tm_year+1900, |
bomilkar | 10:ee0528f8d38e | 30 | tx->tm_isdst); |
bomilkar | 10:ee0528f8d38e | 31 | |
bomilkar | 10:ee0528f8d38e | 32 | pc.printf("loop start\n"); |
bomilkar | 10:ee0528f8d38e | 33 | while (1) { |
bomilkar | 10:ee0528f8d38e | 34 | tx = localtime(&t); |
bomilkar | 10:ee0528f8d38e | 35 | pc.printf("ctime: %s", ctime(&t)); |
bomilkar | 10:ee0528f8d38e | 36 | pc.printf("T: %d:%d:%d D: %d.%d.%d X: %d\n", |
bomilkar | 10:ee0528f8d38e | 37 | tx->tm_hour,tx->tm_min,tx->tm_sec, |
bomilkar | 10:ee0528f8d38e | 38 | tx->tm_mday,tx->tm_mon+1,tx->tm_year+1900, |
bomilkar | 10:ee0528f8d38e | 39 | tx->tm_isdst); |
samux | 9:d88699a0905a | 40 | wait(1); |
bomilkar | 10:ee0528f8d38e | 41 | t += 1; |
samux | 7:5e693654d5b4 | 42 | } |
bomilkar | 10:ee0528f8d38e | 43 | } |