Kann das mal jemand einem Anfänger erklären ?



  • Hallo Forum...
    ich bin absoluter C++ Anfänger und brauche ein wenig Starthilfe.
    Ich habe angefangen das Tutorial 'Schornboeck' zu lesen und weiß bei meinem Beispielcode nicht, ob ich den richtig verstanden habe:

    //Kommentare nach meinem Verständnis
    //statischen Konstanten Zeiger einrichten und ab 
    //diesem den Text in den Speicher schreiben
    //auf welche Adresse zeigt der Zeiger ? Auf das T?
    static const ascii * tele_NameBuffer = "Telemetry";
    
    //identisch wie oben
    static const ascii * _TELE_STR_TL_CMD = "at+TEL";
    
    //Wird hier eine Variable mit dem Inhalt aus dem Speicherbereich,
    //Wo der Zeiger drauf zeigt erzeugt ?
    //Wenn ja, hätte man den Text nicht direkt in die Variable schreiben können?
    #define TELE_STR_TL_CMD         ( ascii * ) _TELE_STR_TL_CMD
    

    Ich versuche diese Samples zu verstehen.
    Bitte helft mir.
    Danke



  • [cpp]

    //statischen Konstanten Zeiger einrichten und ab
    //diesem den Text in den Speicher schreiben

    // es handelt sich um einen statischen Zeiger auf konstanten Inhalt
    // der Zeiger waere konstant, wenn du ihn so deklariert: "static ascii* const ..."
    // s. dazu FAQ

    //auf welche Adresse zeigt der Zeiger ? Auf das T?

    // richtig, der Zeiger zeigt auf T, man koennte bei einer Übergabe sowohl
    // tele_NameBuffer als auch &tele_NameBuffer[0] schrieben, was identisch ist, die
    // Bedeutung aber nochmal verdeutlicht
    static const ascii * tele_NameBuffer = "Telemetry";

    //identisch wie oben
    static const ascii * _TELE_STR_TL_CMD = "at+TEL";

    //Wird hier eine Variable mit dem Inhalt aus dem Speicherbereich,
    //Wo der Zeiger drauf zeigt erzeugt ?
    //Wenn ja, hätte man den Text nicht direkt in die Variable schreiben können?

    // was du hier erzeugst ist ein Makro. Es wird vor dem eigentlichen
    // Compilier-Vorgang vom Praeprozessor ausgewertet und zwar in der Form
    // das jedes nachfolgende Vorkommen von "TELE_STR_TL_CMD" durch "( ascii * ) _TELE_STR_TL_CMD"
    // ersetzt wird.
    #define TELE_STR_TL_CMD ( ascii * ) _TELE_STR_TL_CMD[/cpp]

    Gruss,
    DeSoVoDaMu



  • Danke, das hab ich kapiert.
    Bald kommt bestimmt die nächste Frage....
    😃


Anmelden zum Antworten