Über Macro auf Array zugreifen



  • Hi,

    Ich möchte aus einem Array Werte auslesen. Da der Zugriff an der aufgerufenen Stelle einen recht komplexen Ausdruck verursacht (ext_StorageClass.st_Itemlist.st_NumericValues.data[2]) wollte ich das ein wenig verkürzen, indem ich ein Macro benutze

    #define GET_VALUE(ID) ext_StorageClass.st_Itemlist.st_NumericValues.data[##ID]
    

    Was nun bei VC++ (6,7,8) wunderbar funktioniert, steigt bei gcc (3.4.2) mit folgendem Fehler aus:

    pasting "[" and "1" does not give a valid preprocessing token

    Wie muß das da aussehen bzw was ist da falsch?



  • In C++ verwendet man da lieber eine inline-Funktion würd ich sagen.



  • ##id heisst doch afaik string expansion - also wird das was du als inex verwendest als string wahrgenommen. versuch doch mal mit nur id ohne ##.

    edit: *FireFlow_Zustimm*



  • Nee, nur ID geht nicht, da fügt er ID als String in das Konstrukt ein und macht einen Syntaxx Fehler.

    Bis zu einer inline Funktion hab ich aber gar nicht gedacht, ich glaub das ist eine gute Idee, DANKE! 🙂


Anmelden zum Antworten