Eclipse CDT mit Cygwin - Probleme mit Include-Direktive



  • Hallo,
    ich habe Eclipse Photon und die neuesten Versionen von sowohl CDT alsauch Cygwin installiert.
    Außerdem habe ich - glaubte ich jedenfalls - sämtliche relevanten Ressourcen für die C/C++-Entwicklung heruntergeladen.
    Ich habe folgendes Programm geschrieben:´

    #include <iostream> using Namespace std;
    int main() {
    cout << "Hello, world!" << endl;
    return 0;
    }
    

    Dann also build: Führt zu 2 Fehlern und einer Warnung. Die Warnung ist: "Extra token after include directiv", die fehler beziehen sich darauf, dass cout und endl nicht definiert seien.
    Ich kürze das Program also:

    #include <iostream>;
    int main() {
    return 0;
    }
    

    Dies führt zu keinerlei Problemen. Das Problem ist also der "using Namespace std"-Teil.
    Man sagte mir, in Eclipse müsste ich die include-Pfade noch eingeben. Das sash i.d.R. so aus: .../Cygwin/lib/gcc/...
    Problem hier: Ich habe Cygwin über den Mirror rheinuni Bochum runter geladen - und die erstellte Ordnerstruktur sieht ganz anders aus, es gibt z.B. keinen Lib-Ordner. Ich habe beim Downlaod bin, nicht src gewählt, weil ich dachte, dass ich src nur brauche, falls ich Änderungen an Cygwin selbst vornehmen will. Richtig gedacht?
    Über Infos diesbezüglich und was ich nun tun sollte würde ich mich freuen.
    MfG,
    Tim



  • Nö, die Fehler beziehen sich auf deine Präprozessor Direktive.
    Der Präprozessor behandelt ab der Raute '#' die ganze Zeile und ignoriert das 'using namespace std'. Daraus folgen dann die beiden Fehler:

    1. die Direktive enthält Zeichen, die nicht behandelt werden (using namespace std)
    2. Der Compiler kennt endl und cout nicht, weil du den namespace std nicht geöffnet hast.


  • @timb sagte in Eclipse CDT mit Cygwin - Probleme mit Include-Direktive:

    Die Warnung ist: "Extra token after include directiv"

    Und du kommst nicht auf die Idee, das using mal in einer eigene Zeile zu schreiben?



  • Die erste Zeile mußt du auf zwei aufteilen (und namespace klein schreiben):

    #include <iostream>
    using namespace std;
    

    Präprozessorbefehle (die mit #anfangen) müssen immer in einer eigenen Zeile stehen.



  • Vielen Dank 🙂
    Ich bin blind und habe das C++-Tutrial an meinem Handy gelesen - daher war für mich nicht ersichtlich, dass die Befehlsteile in verschiedenen Zeilen standen. Danke für die Hilfe!



  • @timb Hey Tim, du bist echt Blind und schreibst Programme ? Das ist ja sehr lobenswert, ich hatte früher auch in der Familie mit der Blindheit zu tun, und seither versuche ich den Maschinen das sehen beizubringen, nach 40 Jahren mit mäßigem Erfolg, das problem aller Maschinen ist, es ist niemand zuhause. Es wird der Tag kommen an dem dort ein Licht aufgeht. Vielleicht wird dann das sehen nicht mehr so wichtig wiegen. Also wenn Du Dir was vorstellen kannst was noch fehlt , schreib doch mal dazu etwas. Grüße aus Berlin Karsten