dringende Hilfe
-
Hallo zusammen,
könnt Ihr bitte klären, was die Zeillen genau machen?
Sa1638_Look_Up_Table4_map.N = 6;
Sa1638_Look_Up_Table4_map.x_table = (unsigned_int16_t*)&BTRP1;
Sa1638_Look_Up_Table4_map.z_table = (signed_int16_t*)&BTRP2;Wenn ihr genauer beschreiben könntet, würde ich mich seh freuen
Danke
Bagi
-
Hier liegt ein Objekt mit dem schönen Namen
Sa1638_Look_Up_Table4_map
vor. Wir kennen dessen Typ nicht, aber es ist anscheinend ein struct, welches mindestens die FelderN
,x_table
undz_table
hat. Diesen Feldern werden nacheinander die Werte 6,&BTRP1
und&BTRP2
zugewiesen, dabei sind&BTRP1
und&BTRP2
die Adressen der ObjekteBTRP1
undBTRP2
. Aus den Zuweisungen können wir schließen, dass das Feld N einen arithmetischer Datentyp hat.x_table
undz_table
haben einen Pointertyp, der kompatibel mitunsigned_int16_t*
bzw.signed_int16_t*
ist. Spekulation: Das sind sogar genau die Typen vonx_table
bzw.z_table
, die andere realistische* Möglichkeit wärevoid*
, aber dann wäre der Cast sinnlos. Wir kennen den Typ vonBTRP1
undBTRP2
, aber aus dem Vorhandensein der Casts kann man spekulieren, dass es keineunsigned_int16_t
bzw.signed_int16_t
sind. Jedoch machen viele schlechte Programmierer sinnlose Casts auf Verdacht, daher ist diese Spekulation nicht so fundiert wie die Annahmen über den Typ vonx_table
undz_table
.Lass mich raten: Du hast nun genau so viel verstanden wie vorher, oder?
*: Realistisch heißt hier: Unter der Annahme, der Programmierer macht sich keinen Spaß daraus, mit Absicht unlesbaren und irreführenden Code zu schreiben.
-
bat schrieb:
Sa1638_Look_Up_Table4_map.x_table = (unsigned_int16_t*)&BTRP1; Sa1638_Look_Up_Table4_map.z_table = (signed_int16_t*)&BTRP2;
Zeiger-Casts sind in C meistens sinnfrei (bei Anfängern immer) und lassen auf Inkompetenz des Entwicklers bei seinem Programmdesign schließen bzw. er hat den Überblick verloren, was sich nicht ausschließen muss.
Dass hierbei dem Compiler die Möglichkeit zur (statischen) Codeprüfung genommen wird, ist nur ein Aspekt. (normalerweise weiß der Compiler weitaus besser mit C Code umzugehen und den Überblick zu behalten, als der Entwickler)