Hallo Leute,
ich hab da ein Problem mit einem void pointer.
Ich habe ein globales Struct Element. Darin befindet sich ein void Pointer.
Dann gibt es ein zweites globales Struct Element, in dem sich mehrere uint16_t Variablen befinden.
Ich möchte nun während der Laufzeit dem Pointer verschiedene Adressen geben, und zwar die adressen der verschiedenen uint16_t Variablen.
Das funktioniert auch bisher. Ich bekomme allerdings immer die Warnung vom Compiler:
Hier vereinfachter Code:warning: assignment discards qualifiers from pointer target type
Ich dachte ich müsste bei der Adresszuweisung evtl ebenfalls einen Pointer-Cast ((uint16_t *)nav.pvar = &system.aCode:volatile struct { void *pvar; } nav; volatile struct { uint16_t a; } system; .... void func() { nav.pvar = &system.a; //erzeugt die Warnung *(uint16_t*) nav.pvar ++; //normale dereferenzierung nach pointer type cast return; }machen, aber das führt dann zu einem error:
Ich würde die Warnings gerne wegbekommen, da sie mit sicherheit zu irgendeinem unerklärlichen Verhalten in der Laufzeit führen.error: invalid lvalue in assignment
Habt ihr 'ne Idee, was ich da falsch mache?
Viele Grüße,
Simon
Lesezeichen