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


  • Mod

    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 Felder N , x_table und z_table hat. Diesen Feldern werden nacheinander die Werte 6, &BTRP1 und &BTRP2 zugewiesen, dabei sind &BTRP1 und &BTRP2 die Adressen der Objekte BTRP1 und BTRP2 . Aus den Zuweisungen können wir schließen, dass das Feld N einen arithmetischer Datentyp hat. x_table und z_table haben einen Pointertyp, der kompatibel mit unsigned_int16_t* bzw. signed_int16_t* ist. Spekulation: Das sind sogar genau die Typen von x_table bzw. z_table , die andere realistische* Möglichkeit wäre void* , aber dann wäre der Cast sinnlos. Wir kennen den Typ von BTRP1 und BTRP2 , aber aus dem Vorhandensein der Casts kann man spekulieren, dass es keine unsigned_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 von x_table und z_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)


Anmelden zum Antworten