Hallo, ich stehe gerade vor der Frage, wie ich die Adresse von einem Strukturelement aus einem Zeiger auf diese Struktur ermitteln kann. Ich habe zwar eine Lösung, aber der Compiler bringt hier immer eine Warnung. Deshalb wollte ich mal fragen, ob man das auch schöner machen könnte. Erstmal ein paar Details: Ich habe einen Typ folgendermaßen definiert (verinfachtes Beispiel): typedef struct { unsigned int data_length_w; unsigned char* data_pc; } structure_t_s; Einer Funktion test(...) wird ein Zeiger auf eine Variable von diesem Typ structure_t_s übergeben. Innerhalb dieser Struktur rufe ich eine Funktion test_2(...) auf, der ich einen Zeiger auf das Strukturelement data_length_w übergeben muss: void test(structure_t_s* test_ps) { test_2(&(test_ps->data_length_w)); // <-- Hier kommt immer die compiler-Warnung "supsicuous pointer conversion" } void test_2(unsigned int* zahl_pw) { //... } Hat jemand eine Idee, wie ich so etwas besser lösen könnte? Mfg tobiflea
Der Ansatz sieht soweit in Ordnung aus, genau so macht man so etwas. Es gibt nicht zufälligerweise einen von der Implementierung abweichenden Prototyp der Funktion test_2? Ändert sich das Warnungsverhalten des Compilers, wenn Du
1 | void test(structure_t_s* test_ps) |
2 | {
|
3 | unsigned int* p; |
4 | |
5 | p = &(test_ps->data_length_w); |
6 | test_2(p); |
7 | }
|
schreibst?
Zeiger subtrahieren? Ist zwar eine cast Orgie aber dann ist sogar das alignment egal. Stefan
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.