Zeiger auf ein Array generieren lassen. ( siehe Nachrichtentext ) Zweiter Teil



  • Tim schrieb:

    Das Makro löst doch kein Problem. Damit ist es auch nicht möglich über alle einzelnen Arrays zu iterieren.

    Schade eigentlich. In einer Schleife funktioniert das nicht mehr. Wieso ?

    Tim schrieb:

    Aber da der Op ja kein Interesse an einer echten Lösung hat und hier ausfallend wird... Thread closed.

    Natürlich habe ich Interesse. Ausfallend, ach herrje. Wundert dich das, wenn man mit dummen Kommentaren abgespeist wird ? Ist es dann ein Wunder, das einem mal der Kragen platzt ?



  • [?] schrieb:

    Tim schrieb:

    Das Makro löst doch kein Problem. Damit ist es auch nicht möglich über alle einzelnen Arrays zu iterieren.

    Schade eigentlich. In einer Schleife funktioniert das nicht mehr. Wieso ?

    Weil der Präprozessor durch den Code durchläuft, bevor er zum Compiler kommt. Und dabei achtet er nicht auf mögliche Inhalte der beteiligten Variablen, sondern ersetzt rein auf Textebene den Ausdruck 'DONS_EVIL_MACRO__GET_ARRAY(i)' durch _i (und diese Variable kennt der Compiler nicht.

    Die bessere Lösung hat Shade of Mine in deinem letzten Thread bereits genannt: statt 224 einzelner Array solltest du ein großes Array verwenden.



  • CStoll schrieb:

    Die bessere Lösung hat Shade of Mine in deinem letzten Thread bereits genannt: statt 224 einzelner Array solltest du ein großes Array verwenden.

    Ach so. Na, das ist doch mal eine Aussage 👍

    Ich wollte das als Bibliothek für Anwender möglichst transparent machen, jedes Array ein eigener Name. Naja, das wird dann wohl nichts.
    Dann muss ich wohl oder übel ein großes Array machen, wenn das nicht anders geht.

    So wird es wohl ziemlich undurchsichtig werden. Die Arrays sind ja auch unterschiedlich gross.



  • Die Namen bleiben sowieso beim Compilieren auf der Strecke, also nützen sie dir am Ende auch nichts weiter. Aber du kannst ja beides miteinander kombinieren:

    int _1 = {...};
    int _2 = {...};
    ...
    
    int* array[] = {_1,_2,...};
    

    (da hat der Anwender die Wahl, ob er eins der beteiligten Arrays über seinen Namen anspricht oder über die laufende Nummer)



  • CStoll schrieb:

    Die Namen bleiben sowieso beim Compilieren auf der Strecke, also nützen sie dir am Ende auch nichts weiter.

    Wie meinst du das, werden die vom Compiler umbenannt ?



  • Nicht umbenannt, komplett "entnannt". Im fertigen Programm bleiben von deinen Variablen nur noch die belegten Speicherbereiche übrig, die dann direkt über ihre Adresse angesprochen werden. Da wirst du (außer in den Debug-Informationen) keinen Hinweis mehr auf die Variablennamen finden.



  • Ja, ok.
    Dann bleibt mir ja wenigstens noch

    int* array[] = {_1,_2,...};
    

    diese Alternative.

    Hiermit sei dir offiziell mein Dank ausgesprochen. 🙂


Anmelden zum Antworten