struct Anfängerfragen
-
Hiii,
wenn ich in meiner Header-Datei einen struct definiert habe, wieso kann ich in meiner Source Datei darauf zugreifen ? Ich bekomme stets eine Fehlermeldung.
Die Header-Datei lautet:
struct nmeap_gga { double latitude; double longitude; double altitude; unsigned long time;[cpp] int satellites; int quality; double hdop; double geoid; }; typedef struct nmeap_gga nmeap_gga_t;Source Datei, eine einfach Deklaration:
nmeap_gga_t g_gga;Die Fehlermeldung ist, dass nmeap_gga_t kein Typ bezeichnet
Kann mir jemad helfen?
Grüße
-
Das sollte so stimmen, wo tritt die Fehlermeldung auf?
nmeap_gga_tist ja durch deintypedefein Typ. Allerdings frage ich mich, wieso du das so kompliziert machst, kommst du von C? Einmal abgesehen von den merkwürdigen Bezeichnern könnte man gerade so gut Folgendes schreiben:nmeap_gga g_gga; // nmeap_gga ist ja ein Typoder global direkt nach der Strukturdefinition:
struct nmeap_gga { // ... } g_gga;
-
typedef struct nmeap_gga nmeap_gga_t;Das sollte so stimmen? Oo
schreibst du auch immertypedef class ....;wenn du das struct weglässt, dann sollte es gehen...
bb
-
Ich bin mir nicht sicher, ob das Standard ist, aber VC++ akzeptiert es jedenfalls. VC++ akzeptiert aber auch
void main(), von daher...Wenn diese Syntax erlaubt ist, dann kommt sie wahrscheinlich aus C (kann man das dort?) und wird in C++ sowieso nie verwendet...
-
wahrscheinlich, weil er es als forward deklaration interpretiert - kein plan - aber mich würde es wundern, wenn es ohne struct nicht gehen würde...
-
unskilled schrieb:
aber mich würde es wundern, wenn es ohne struct nicht gehen würde...
Natürlich geht es auch ohne
struct, etwas anderes hab ich auch nie behauptet.
-
ich meinte aber nicht auch sondern nur so...
obwohl ich sagen muss, dass ich es ne probiert hab ^^
-
Eben, ich habs ausprobiert, mit geht es. Aber wie gesagt, der VC++ ist nicht repräsentativ für den C++-Standard...
Weiss da jemand mehr darüber?
-
Ja ich komme von C..
Danke euch, habe es jetzt hinbekommen...
Grüße
-
Vielleicht noch allgemein zur Syntax von
typedef:typedef <Typ> <neuer Bezeichner>;ist geläufig (und zwar ohne Schlüsselwörter wie
structoderclass.typedef typename <Typ> <neuer Bezeichner>;wird innerhalb von Templates gebraucht.
-
Nexus schrieb:
Vielleicht noch allgemein zur Syntax von
typedef:[SNIP]
typedef typename <Typ> <neuer Bezeichner>;wird innerhalb von Templates gebraucht.
<erbsenzähl>
typename is nicht grundsätzlich in templates nötig!
</erbsenzähl>
-
bladerunner10 schrieb:
Nexus schrieb:
Vielleicht noch allgemein zur Syntax von
typedef:[SNIP]
typedef typename <Typ> <neuer Bezeichner>;wird innerhalb von Templates gebraucht.
<erbsenzähl>
typename is nicht grundsätzlich in templates nötig!
</erbsenzähl>
Nur halt, wenn nen Template-Parameter im Typ vorkommt...
bb