|Subject:||[avr-gcc-list] AVR Libc int32_t and uint32_t typedefs are incorrect|
|Date:||Tue, 10 Jan 2012 17:45:20 -0000|
I recently discovered that the int32_t and uint32_t typedefs in stdint.h are incorrect (at least on my target – AT90CAN128).
From what I can tell, the typedefs are duplicated, once for doxygen and once for gcc. Unfortunately they are different.
Referring to the latest v1.8.0 stdint.h, line 94 and 99 define int32_t and uint32_t as signed long and unsigned long respectively. This is correct (according to my tests) but these lines are only processed by Doxygen. However lines 125 and 126 define int32_t and uint32_t as signed int and unsigned int respectively. This is what the compiler uses, which is unfortunately incorrect.
I have confirmed the sizes of the basic types on my system:
sizeof(long) = 4
sizeof(unsigned long) = 4
sizeof(int) = 2
sizeof(unsigned int) = 2
I believe this issue has been in the source since v1.4.0 and the move to doxygen.
Asylia ExchangeDefender Message Security: Check Authenticity
|[Prev in Thread]||Current Thread||[Next in Thread]|