Präprozessordirectiven in #define



  • Hi

    Mein Problem ist folgendes. Ich habe ein Makro und wollte in einen anderen Makro überprüfen ob es existiert. deswegen habe ich geschrieben

    #define MYKONSTANT 5

    #define PROOF #ifndef MYKONSTANT \
    0 \
    #else \
    MYKONSTANT \
    #endif

    Kann man das nicht so schreiben. Gibt es einen Möglichkeit das so zu schreiben???



  • Ich denke das geht nicht. Du kannst ja auch nicht folgendes machen, oder?

    #define COMMENT(comment) // #comment
    

    😃



  • Ok, blödes Beispiel und ausserdem noch am Thema vorbei. Bei deiner Variante müsste der Präprozessor zweimal durchlaufen nur um die Makros und Präprozessor-Anweisungen aus dem Code zu haben.



  • Falls du PROOF nur brauchst, um auf Veränderungen in MY_CONSTANT einzugehen:

    const int MY_CONSTANT = 5;
    const int PROOF = MY_CONSTANT == 5 ? MY_CONSTANT : 0;
    

    andernfalls, also wenn du die Existenz von MY_CONSTANT selbst prüfen willst, und wenn du unbedingt mit Textersetzungsmaschinen arbeiten willst,:

    #define MY_CONSTANT 5
    
    #ifdef MY_CONSTANT
    const int PROOF = MY_CONSTANT;
    #else
    const int PROOF = 0;
    #endif
    
    //das verhält sich zumindest ähnlich und kommt mit textersetzung aus.
    

    [ Dieser Beitrag wurde am 07.07.2003 um 00:42 Uhr von davie editiert. ]


Anmelden zum Antworten