Forum: Compiler & IDEs Typdef struct mit pointer?


von Simon (Gast)


Lesenswert?

Ich habe
1
typdef struct {
2
 uint8_t name;
3
 uint8_t vornamename;
4
} data;

data meine_struct;  <- muss ich dies machen oder kann man direkt auf 
data.name zugreifen?


Gibt es eine Möglichkeit, ohne die structure kopieren zu müssen diese in 
einer funktion zu verändern? Also Sprich die darin gespeicherten werte..
pointer?
1
void function(meine_struct) {
2
 meine_struct.name = 1;
3
}

von Peter II (Gast)


Lesenswert?

Simon schrieb:
> Gibt es eine Möglichkeit, ohne die structure kopieren zu müssen diese in
> einer funktion zu verändern? Also Sprich die darin gespeicherten werte..

> pointer?
ja
1
void function(meine_struct* p) {
2
 p->name = 1;
3
}

oder wenn es c++ ist
1
void function(meine_struct& p) {
2
 p.name = 1;
3
}

von Kali (Gast)


Lesenswert?

>data meine_struct;  <- muss ich dies machen oder kann man direkt auf
>data.name zugreifen?

Die Frage verstehe ich nicht ganz. "data" ist der Typname (wie char oder 
int).

Du musst erstmal eine Variable mit diesem Typ anlegen. Z.B.
1
data x;

Dann kannst Du mit:
1
x.name = ...

auf die Mitglieder der Struktur zugreifen.

Mit "data.name" sagst Du nichts sinnvolles. Den data ist wiegesagt, ein 
Typ.

>Gibt es eine Möglichkeit, ohne die structure kopieren zu müssen diese in
einer funktion zu verändern?

Ja. Übergib der Funktion einen Zeiger auf eine Variable mit diesem Typ.
1
void function(data * meine_struct) {
2
 meine_struct->name = 1;
3
}

von Simon (Gast)


Lesenswert?

Vielen Dank!

kann mir einer sagen warum das in der Header Datei nicht geht?:
1
extern void rtcc_get_data(dat *p);

../datei.h:9: error: expected ')' before '*' token


In der .c Datei:
1
void rtcc_get_data(dat *p) { }

von Philipp (philipp_s19)


Lesenswert?

Was ist den "dat" ? Ein Typedef oder eine Struct ?

von Simon (Gast)


Lesenswert?

typedef struct {

} dat;

von Philipp (philipp_s19)


Lesenswert?

Ist "dat" schon bekannt im Header? (-edit- also in datei.h) Oder wird 
das erst später deklariert?

Ist das einzige was ich mir jetzt vorstellen könnte ...

von Peter II (Gast)


Lesenswert?

oder es fehlt das struct vor dat - war das bei C nicht mal so, zumindest 
im alten Standard

von Simon (Gast)


Lesenswert?

Beides wurde in der selben header Datei deklariert,
aber du hattest recht! ich habe die typedef unter der funktion 
deklariert.

Bedeutet das ich muss auf die Reihenfolge achten?
Gibts da andere Möglichkeiten?

So müsste ich quasi alle typedef sachen zuvor deklarieren?

von Peter II (Gast)


Lesenswert?

Simon schrieb:
> So müsste ich quasi alle typedef sachen zuvor deklarieren?

ja, so wird es überlicherweise gemacht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.