Probleme mit Zugriff auf struct
-
Hallo,
wie kann ich bei dieser struct auf die einzelnen element zugreifen?
struct _Msg { unsigned short ErrNbr; unsigned char *Str; }; struct _MsgLanguage { const struct _Msg test; }; const struct _MsgLanguage ErrMsg[] = { {1, "teststring"}, {2, "teststring2"} }; /* hier gibt es leider fehlermeldungen: */ unsigned short nbr = ErrMsg[0].test.ErrNbr; unsigned char *ptr = &ErrMsg[0].test.Str;
Gruß
Hans-Jörg
-
welche Fehlermeldungen ?
zumindest mit MSVC (vs2005e) scheint es zu funktionieren
wenn denn das '&' entfernt wirdunsigned char *ptr = ErrMsg[0].test.Str;
-
struct _Msg { unsigned short ErrNbr; const char *Str; }; struct _MsgLanguage { const struct _Msg test; }; const struct _MsgLanguage ErrMsg[] = { {1, "teststring"}, {2, "teststring2"} }; unsigned short nbr = ErrMsg[0].test.ErrNbr; const char *ptr = ErrMsg[0].test.Str;
-
RED-BARON schrieb:
welche Fehlermeldungen ?
zumindest mit MSVC (vs2005e) scheint es zu funktionieren
wenn denn das '&' entfernt wirdunsigned char *ptr = ErrMsg[0].test.Str;
Hallo,
die Fehlermeldung lautet: "expression must be a pointer to a complete object type".
Vielleicht macht die Tatsache einen Unterschied, dass die Struct komplett in einem c-file definiert wird und als extern im dazugehörigen headerfile definiert ist, so dass ich auch von anderen c-files darauf zugreifen kann. Das mach ich bzw. versuch ich gerade, aber mit der obigen Fehlermeldung.
Gruß
Hans-Jörg
-
Hans-Jörg schrieb:
RED-BARON schrieb:
welche Fehlermeldungen ?
zumindest mit MSVC (vs2005e) scheint es zu funktionieren
wenn denn das '&' entfernt wirdunsigned char *ptr = ErrMsg[0].test.Str;
Hallo,
die Fehlermeldung lautet: "expression must be a pointer to a complete object type".
Vielleicht macht die Tatsache einen Unterschied, dass die Struct komplett in einem c-file definiert wird und als extern im dazugehörigen headerfile definiert ist, so dass ich auch von anderen c-files darauf zugreifen kann. Das mach ich bzw. versuch ich gerade, aber mit der obigen Fehlermeldung.
Gruß
Hans-Jörgim Headerfile steht:
extern const struct _MsgLanguage ErrMsg[];
-
im gleichen c-file in dem auch die structs definiert sind, funktioniert der zugriff. Also mach ich anscheinend irgendwas mit dem extern () falsch.
Gruß
Hans-Jörg
-
Die Typ-Definitionen der structs '_Msg' und '_MsgLanguage' müssen beide im Header-File abgelegt sein.