Hi, ich habe ein kleines Programm mit dem AVRGCC kompiliert. Warnung: dereferencing type-punned pointer will break strict-aliasing rules. Die Ursache ist "HIGHUINT16(var32)". Wie kann das Makro "HIGHUINT16(value)" geändert werden damit die Warnung weg ist (und trotzdem wird das Makro weiter benutzt wie bisher)?
1 | #define UINT8 unsigned char
|
2 | #define UINT16 unsigned short
|
3 | #define UINT32 unsigned long
|
4 | #define HIGHUINT8(value) *( (UINT8 *) &(value))
|
5 | #define HIGHUINT16(value) *( (UINT16 *) &(value))
|
6 | |
7 | int main() |
8 | {
|
9 | UINT32 var32 = 0x11223344; |
10 | UINT16 var16; |
11 | UINT8 var8; |
12 | var16 = HIGHUINT16(var32); |
13 | var8 = HIGHUINT8(var16); |
14 | return 0; |
15 | }
|
Danke im Voraus Senmeis