#define ? - Textersetzung ?



  • Hallo,

    ich versteh noch nicht ganz den Sinn von

    #define
    

    ... Ich les zwar überall in Tutorials und Büchern das

    #define
    

    eine Textersetzung durchführt, aber was genau ist das ? und warum nehmen manche Programmierer

    #define
    

    wenn sie einen konstanten Wert erzeugen wollen und nicht einfach

    const
    

    ?

    Ich bin in Programmierung und C++ ziemlich neu und unsicher, deshalb wäre ich um eine genau Erklärung dieser Präprozessor-Direktive sehr dankbar

    mfg
    Anfänger!



  • Anfänger! schrieb:

    Hallo,

    ich versteh noch nicht ganz den Sinn von

    #define
    

    ... Ich les zwar überall in Tutorials und Büchern das

    #define
    

    eine Textersetzung durchführt, aber was genau ist das ? und warum nehmen manche Programmierer

    #define
    

    wenn sie einen konstanten Wert erzeugen wollen und nicht einfach

    const
    

    ?

    Ich bin in Programmierung und C++ ziemlich neu und unsicher, deshalb wäre ich um eine genau Erklärung dieser Präprozessor-Direktive sehr dankbar

    mfg
    Anfänger!

    Was eine Textersetzung ist?
    Öffne eine beliebige Textdatei im Notepad, dann Bearbeiten->Ersetzten.
    Da kanst ausprobieren, was das macht, das gleiche passiert beim #define

    Warum #define statt const oder auch enum kann ich dir auch nicht sagen,
    hab ich mich auch schon oft gefragt.

    sonstiger Sinn:
    z. B. bedingte Compilierung:

    #ifdef FOO
        doSomething();
    #else
        doSomethingElse();
    #endif
    

    falls vorher "#define FOO" wird "doSomething()" aufgerufen,
    ansonsten doSomethingElse(). Damit lässt sich beispielsweise
    plattformunabhängig programmieren.
    Unter Linux wird FOO definiert, unter Windows nicht.

    doSomething



  • Hallo,

    wenn man im Notepad "ersetzen" wir die Datei durch eine andere ersetzt(Ist ja eigtl klar), aber wie funktioniert das jetzt mit #define ? Wird z.B. wenn man folgendes schreibt Test durch 34 ersetzt ??

    #define Test 34
    

    mfg



  • Ja.

    #define BEGIN {
    #define END }
    
    int main ()
    BEGIN    // hier wird BEGIN durch { ersetzt
       ...
    END      // hier wird END durch } ersetzt
    

Anmelden zum Antworten