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

 Thread beobachten
 Thread beobachten Seitenaufteilung abschalten
 Seitenaufteilung abschalten