Wie muss die unten stehende C-Zeile *1 geschrieben werden, damit die folgende Warnung nicht mehr Auftritt: stack.c:73:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
1 | *1 |
2 | |
3 | (*((unsigned long*)&myip[0])) = get_eeprom_value(IP_EEPROM_STORE,MYIP); |
'myip' und 'get_eeprom_value' sind wie folgt festgelegt (Webserver-Quelltext von U. Radig):
1 | unsigned char myip[4]; |
1 | //----------------------------------------------------------------------------
|
2 | //
|
3 | unsigned long get_eeprom_value (unsigned int eeprom_adresse,unsigned long default_value) |
4 | {
|
5 | unsigned char value[4]; |
6 | |
7 | for (unsigned char count = 0; count<4;count++) |
8 | {
|
9 | eeprom_busy_wait (); |
10 | value[count] = eeprom_read_byte((unsigned char *)(eeprom_adresse + count)); |
11 | }
|
12 | |
13 | //Ist der EEPROM Inhalt leer (0xFF) oder Null (0x00) ?
|
14 | if (((*((unsigned long*)&value[0])) == 0xFFFFFFFF) || ((*((unsigned long*)&value[0])) == 0x00000000)) |
15 | {
|
16 | return(default_value); |
17 | }
|
18 | return((*((unsigned long*)&value[0]))); |
19 | }
|