[En-Nut-Discussion] stm32_can.c fails to build
Harald Kipp
harald.kipp at egnite.de
Sat Aug 18 15:38:15 CEST 2012
Hi Uwe,
On 17.08.2012 22:31, Uwe Bonnes wrote:
>>>>>> "Harald" == Harald Kipp <harald.kipp at egnite.de> writes:
>
> Harald> 'StmCanSendMsg': ../.././nut/arch/cm3/dev/stm/stm32_can.c:867:5:
> Harald> error: dereferencing type-punned pointer will break
> Harald> strict-aliasing rules [-Werror=strict-aliasing]
>
> The trouble case is, where 4 consequitive bytes of the can frame data
> payload get mapped to a 32-bit register. The cast worked for me and my gcc ;-)
>
> Should I write as
> reg32 = byte[0] | (byte[1] <<8)| (bute[2]<<16) | (byte[3] <<24)
>
> or is there a better construct?
Recently I had to fix a similar case in md5.c and used this horrible ugly solution:
http://ethernut.svn.sourceforge.net/viewvc/ethernut/trunk/nut/gorp/hashes/md5.c?r1=4116&r2=4250
Your's looks much nicer.
Regards,
Harald
P.S. No I'm sure you are using an English keyboard (bute instead of byte).
More information about the En-Nut-Discussion
mailing list