Was ist das für ein Define?



  • Hallo Forum,

    was ist das für ein Define? (Aus AtlCom.h, wurde vom Visual Studio in mein ATL Projekt eingefügt.)

    #define DECLARE_PROTECT_FINAL_CONSTRUCT()\
    	void InternalFinalConstructAddRef() {InternalAddRef();}\
    	void InternalFinalConstructRelease() {InternalRelease();}
    

    Was mich stutzig macht sind die "\" Zeichen. Ich kenne das aus anderen Sprachen als verhinderte NewLines. Ist das Standard?

    Bommel



  • Das ist ein mehrzeiliges Makro. \ bedeutet dass noch eine Makrozeile folgt.



  • Hallo,

    Ich sehe hier keine ""-Zeichen. Meinst du \ ?
    Das sind Zeilenfortsetzungszeichen. Die sagen dem Makro nur, dass es in der nächsten zeile weitergeht.



  • Bommel schrieb:

    Was mich stutzig macht sind die "\" Zeichen. Ich kenne das aus anderen Sprachen als verhinderte NewLines. Ist das Standard?

    Die sind auch in C++ "verhinderte NewLines" 😃 Genau bedeutet das \ am Zeilenende, daß die aktuelle Zeile in der nächsten Zeile weitergeht. (dem C++ Compiler sind Zeilenwechsel meistens egal, aber der Präprozessor arbeitet zeilenorientiert) Der Präprozessor sieht also davon noch:

    #define DECLARE_PROTECT_FINAL_CONSTRUCT() void InternalFinalConstructAddRef() {InternalAddRef();} void InternalFinalConstructRelease() {InternalRelease();}
    

    (das könntest du auch so schreiben, aber auf mehrere Zeilen verteilt wird's lesbarer)



  • Vielen Dank 🙂
    Diese Syntax kannte ich noch nicht.

    Ich hatte den Backslash geschrieben. Vermutlich wird es auch außerhalb von cpp Code als Escape Sequenz genutzt.
    Test: "\" <- Wenn das \ hier wieder fehlt macht es der Webserver raus.



  • ma testen. vier backslashes:
    \
    '\'
    ''\''
    "\"



  • das gute a schrieb:

    ma testen. vier backslashes:
    \
    '\'
    ''\''
    "\"

    Jetzt geht es bei mir: "\"
    Aber bei dir auf einmal nicht mehr? Ich habe nur auf zitieren gedrückt. 🤡


Anmelden zum Antworten