#define Frage



  • Hi,

    beim Eineirbeiten in ein C-Programm sind mir folgende Zeilen aufgefallen, die immer wieder vorkommen:

    (1) #define Irgendwas1(a) (variable_X)
    (2) #define Irgendwas2(a,value) (varaible_Y = (value))

    Der Aufruf der Makros sieht folgendermaßen aus:

    (1) Irgendwas1(0)
    (2) Irgendwas2(0,wert)

    So wie ich das kenne, sind das Makros die irgendwelchen Variablen Werte zuweisen sollten. Aber was macht das (a) da drin. Dieses wird doch gar nicht verwendet.
    Und wenn das so ist, was passiert bei der ersten Version (1) mit der variable_X? Die ist dann gar nicht deklariert?

    Oder hat das eine besondere Funktion? 😕

    Thx.
    3ugen



  • Zeig am besten mal die originalen Makros. Ich kann mir kaum vorstellen, dass jemand etwas so sinnloses verbricht. Gerade Fall 1 ist ja doppelt unsinnig...



  • Das sind aus dem Quelltext kopierte Zeilen. Ich habe nur die kryptischen Namen ersetzt. Das einzige was fehlt sind die Deklarationen. Die stehen weiter oben und lauten:

    int variable_X;
    int variable_Y;

    (1) #define Irgendwas1(a) (variable_X)
    (2) #define Irgendwas2(a,value) (varaible_Y = (value))

    Mir kommt es auch unsinnig vor, aber ein Grund muss es doch haben? Oder doch nur Unsinn?



  • Vielleicht gab es ja irgendwann mal eine Funktion, die überflüssig geworden ist und nun durch dieses Makro einfach mit variable_X ersetzt werden soll. Das würde auch den ignorierten Parameter a erklären. So spart man sich das Anfassen von vielen Stellen im Code. Ist aber nicht schön, sowas im Code zu haben.

    EDIT: Das könntest du ja erkennen, indem du dir die Aufrufe der Makros ansiehst.



  • Bei den Aufrufen der Makros wird für das (a) immer eine 0 eingesetzt, quasi wie oben beschrieben:

    (1) Irgendwas1(0) 
    (2) Irgendwas2(0,wert)
    

    Danke für deine Meinung _matze. Ich werde annehmen, dass (a) evtl. für später reserviert wurde oder ähnliches. Auf jeden Fall bestätigt es meinen Verdacht der Nutzlosigkeit.


Log in to reply