Nochmal eine Frage,
Kann es sein, dass wenn die Structs, die in der Union sind,
gleichnamige member haben, es Probleme geben kann?
Folgende Meldung spuckt der Compiler bei folgendem Code aus:
1 | //Header-page on disk
|
2 | struct t_diskheader
|
3 | {
|
4 | u08 diskname[64]; //Name of disk
|
5 | u32 p_root; //Pointer to root-dir
|
6 | u32 disksize; //size of disk in kb
|
7 | };
|
8 |
|
9 | //a headerpage is a page, which contains file-/dirheader-information
|
10 | only
|
11 | struct t_headerpage
|
12 | {
|
13 | u32 p_nextpage; //pointer to next page in chain
|
14 | u16 validbytes; //# of valid bytes in this page
|
15 | u16 hdrreserved; //2 bytes reserved
|
16 |
|
17 | u32 tcreate; //time of creation
|
18 | u32 tlastaccess; //time of last access
|
19 | u32 tlastchange; //time of last change
|
20 | u08 objname[256]; //256-char name of file/dir
|
21 | u32 p_parent; //pointer to parent dir
|
22 | u08 headertype; //0 = DIR, 1 = FILE
|
23 | u08 attribflags; //Atrribute of file/dir
|
24 | u32 filesize; //size of file (if dir, then filesize = 0!)
|
25 | u08 reserved[226]; //Reserved
|
26 | };
|
27 |
|
28 | //t_dirdata is a page, which contains 126 dir entrys
|
29 | struct t_dirdata
|
30 | {
|
31 | u32 p_nextpage; //pointer to next page in chain
|
32 | u16 validbytes; //# of valid bytes in this page
|
33 | u16 hdrreserved; //2 bytes reserved
|
34 |
|
35 | u32 dir_entry[126]; //holds pointer to linked dir/file. max 126
|
36 | };
|
37 |
|
38 | //t_filedata is a page, which holds 504b filedata
|
39 | struct t_filedata
|
40 | {
|
41 | u32 p_nextpage; //pointer to next page in chain
|
42 | u16 validbytes; //# of valid bytes in this page
|
43 | u16 hdrreserved; //2 bytes reserved
|
44 |
|
45 | u08 data[504]; //504b + 8 bytes header = 512byte
|
46 | };
|
47 |
|
48 | //Union of one page.
|
49 | union u_page
|
50 | {
|
51 | u08 raw[512];
|
52 | struct t_filedata;
|
53 | struct t_dirdata;
|
54 | struct t_headerpage;
|
55 | struct t_diskheader;
|
56 | };
|
error C2020: 'p_nextpage' : 'union' member redefinition
error C2020: 'validbytes' : 'union' member redefinition
error C2020: 'hdrreserved' : 'union' member redefinition
Ist es vielleicht sinnvoll, eine neue struct mit den jeweils 3 gleichen
membern zu machen und diese jeweils in die structs t_headerpage,
t_dirdata und t_filedata einzubeziehen?