Hallo,
ich habe folgende Deklaration eines Structs:
1 | struct RxPd_typ {
|
2 |
|
3 | /* -1: not fragmented; >=0: fragment offset */
|
4 | short fragment_offset;
|
5 |
|
6 | /* 0: not processed; 1 = processed */
|
7 | short processed;
|
8 |
|
9 | short ip_checksum;
|
10 | short udp_checksum;
|
11 | unsigned char * dataptr;
|
12 | short header_length;
|
13 | short udp_length;
|
14 | short ip_length;
|
15 | unsigned char command;
|
16 | };
|
und zusätzlich:
1 | extern volatile struct RxPd_typ RxPd[1024];
|
Definition ist in einer .c Datei:
1 | volatile struct RxPd_typ RxPd[1024];
|
Schreibe ich nun folgende Variable:
1 | volatile unsigned char *ptr;
|
auf
Meckert der Compiler, dass das volatile verworfen wird. Wenn ich dataptr
im struct nochmal extra mit volatile kennzeichne, gehts. Wieso wird
volatile nicht auf alle members angewandt? Wenn ich mich nicht völlig
blind war, hab ich es genauso gemacht, wie es u.a. hier in einem anderen
forenbeitrag beschrieben wurde.
grüße
daniel