Code::Blocks ... nichts fuer Anfaenger ?!



  • Sorry für falsches Forum!!!
    Was meinst du mit worauf ich das laufen lassen will ? ^^ //Blutiger anfaenger 😞



  • Die IDE ist, so wie mir der Anschein ist, eine Professionelle Sache fuer Top-Developer oder nicht ? xD

    Nein, keinesfalls. Code::Blocks kann mit professionellen IDEs wie Visual Studio nicht mithalten. Dafür ist es doch gerade für Anfänger viel einfacher.

    Also für Konsolenanwendungen benötigst Du kein Projekt.

    Folgende Schritte:

    1. Code::Blocks starten
    2. Tipps wegclicken (nicht lesen)
    3. Ctrl-Shift-N
    4. Code eingeben, z.B.:
    #include <windows.h>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
     DWORD nSize;  
    
     char computer_name[255];  
     nSize = sizeof( computer_name );
     GetComputerName( computer_name, &nSize );  
     cout << "Computer name: " << computer_name << endl;  
    
     char user_name[255];  
     nSize = sizeof( user_name );
     GetUserName( user_name, &nSize );  
     cout << "User name: " << user_name << endl;  
    
     char windir_name[MAX_PATH];  
     GetWindowsDirectory( windir_name, sizeof( windir_name ) );  
     cout << "Windows-Directory: " << windir_name << endl;  
    
     cout << endl;
     cin.get();
    
     return 0;
    }
    
    1. F9
    2. speichern (als Endung ".cpp" verwenden)
    3. "Schwarze Konsole" (DOS-Box) geht auf, hier:

    Computer name: XXX
    User name: YYY
    Windows-Directory: C:\WINDOWS

    Sieben Schritte! Inclusive Start und Programm bewundern! Lediglich eine Datei hinterher im Speicher, keine am Anfang sinnlosen und speicherfressenden Projektdateien. 👍 😉



  • 1. Du startest Code::Blocks
    2. File -> New -> Project
    3. Console Application auswählen und Go klicken
    4. C++ auswählen und Next klicken
    5. Bei Project title einen Titel wie z.B. HelloWorld eingeben
    6. Einen Ordner auswählen indem das Projekt erstellt werden soll
    7. Als Compiler GNU GCC Compiler auswählen (sollte bereits so sein) und Finish klicken
    8. Links im Workspace im Projekt HelloWorld unter Sources main.cpp durch Doppelklick öffnen
    Folgender Code sollte da angezeigt werden:

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

    9. Im Menü Build -> Build and Run auswählen
    10. Ein Konsolenfenster sollte sich öffnen, in dem Hello World! ausgegeben wird

    Wenn du dich mal ein bisschen besser auskennst wirst du auch verstehen, wofür all die andern Auswahlmöglichkeiten da sind.



  • Alles klar...
    Danke 🙂
    Ich werds gleich nach dem Essen direkt mal ausprobieren 🙂
    Ihr seit toll!!! 😃

    mfg
    haxorizor



  • ..



  • Ob er Projekte anlegt oder nicht ist seine Sache. Jetzt kennt er ja jedenfalls beide Möglichkeiten. Spätestens wenn er mit mehreren Source- und Headerdateien arbeitet muss er sich ein Projekt anlegen. Und so schwierig ist das Anlegen von Projekten mit Code::Blocks ja nun wirklich nicht!

    Außerdem ist mir schon mehrfalls aufgefallen, dass du behauptest Code::Blocks wäre die Weiterentwicklung oder der Nachfolger von Dev-C++. Dass das Schwachsinn ist merkst du z.B. wenn du schaust dass Dev-C++ in Delphi 6 entwickelt wurde, Code::Blocks dagegen mit C++ und WxWidgets. Ich wüsste nicht, was diese beiden IDEs verbindet, außer dass sie OpenSource sind und standardmäßig den MinGW als Compiler verwenden (wobei Code::Blocks noch mit einer Vielzahl anderer Compiler verwendet werden kann).

    Zu deinen Beispielquellcodes:
    Ich halte es nicht für sinnvoll im ersten Programm bereits die plattformabhänge WinAPI und char-Arrays zu verwenden. Kleine Programme mit iostreams und std::strings sind viel sinnvoller.
    Das cin.get() am Ende kannst du dir sparen, da Code::Blocks automatisch die Konsole offen hält, damit man das Ergebnis noch lesen kann.
    Wenn du cin.get() ans Ende schreibst, dann solltest du davor auch mit cin.clear(); die Fehlerflags zurücksetzen und mit cin.ignore(std::numeric_limits<streamsize>::max(), '\n'); den Eingabepuffer leeren.
    conio.h und getch() sind kein Standard-C++ und damit nicht sinnvoll für Anfänger.



  • Danke für die ausführliche Hilfe!!!
    Klappt alles wunderbar... 🙂

    mfg
    haxorizor



  • speicherfressenden Projektdateien

    rofl
    Macht Code::Blocks denn soooooo groooosse Projektdateien?



  • hustbaer schrieb:

    speicherfressenden Projektdateien

    rofl
    Macht Code::Blocks denn soooooo groooosse Projektdateien?

    Der Ordner meines Code::Blocks-Projekts "HelloWorld" ist 61KB groß. Wenn man die Executable erstellt kommen noch 1010KB dazu.



  • @OhneName: Nichts für ungut, aber genau diese übertriebene "C++-Kacke" irritiert Anfänger IMHO.

    cin.ignore(std::numeric_limits<streamsize>::max(), '\n');
    

    Du meine Güte! 🙄

    Dann lass uns lieber bei getch() von conio.h bleiben. Ich habe noch nichts einfacheres und besseres gesehen. Alles andere ist Krampf, um sinnlose C++-Ansprüche zu erfüllen, z.B. dieses tolle Konstrukt, das Anfänger sicher begeistert:

    void wait() //ausführliche Version
    {
        std::cin.clear();
        std::streambuf* pbuf = std::cin.rdbuf();
        std::streamsize size = pbuf->in_avail();
        std::cin.ignore(size);
        std::cin.get();
    }
    

    Ohne klappt es nicht, spätestens, wenn er die exe-Datei selbst startet.

    Warum gibt es eigentlich diese Funktion wait() in C++ nicht automatisch?



  • Macht Code::Blocks denn soooooo groooosse Projektdateien?

    Warum wollt ihr am Anfang den Leuten Projektordner für eine Datei aufschwatzen? Später ja, aber nicht am Anfang! 🙄

    @haxorizor: Was ist deine Meinung dazu?



  • Was ist eigentlich der Zahlentyp in Code::Blocks für UINT64? "unsigned long long" aus Dev-Cpp geht wirklich nicht. Vielleicht hast Du Recht mit der Nachfolge, obwohl die Kiste in der Bedienung genau Dev-Cpp entspricht, sogar eine Importfunktion dafür anbietet.



  • Ich stimme dir zu, dass dieses Konstrukt auf Anfänger verwirrend wirkt. Das ist für mich aber kein Grund stattdessen Nicht-Standard-C++ zu empfehlen. Genau deshalb hält Code::Blocks ja auch automatisch die Konsole offen, dann hat man den ganzen Ärger als Anfänger gar nicht. Und wenn er die Exe alleine starten will, dann soll er das gefälligst wie jeder andere normale Benutzer von Konsolenanwendungen auch über die Kommandozeile tun. Ich meine "Wer getch(); empfiehlt, empfiehlt auch systen("PAUSE");". Und wenn er wirklich sein Programm auch ohne IDE oder Kommandozeile starten will, dann soll er das eben in eine Funktion schreiben und sich damit zufriedengeben, dass diese ihren Zweck erfüllt, bis er C++ so gut kann um diese Lösung zu verstehen.

    void wait()
    {
      std::cin.clear();
      std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
      std::cin.get();
    }
    
    int main()
    {
      ...
      wait();
    }
    


  • Erhard Henkes schrieb:

    Was ist eigentlich der Zahlentyp in Code::Blocks für UINT64? "unsigned long long" aus Dev-Cpp geht wirklich nicht. Vielleicht hast Du Recht mit der Nachfolge, obwohl die Kiste in der Bedienung genau Dev-Cpp entspricht, sogar eine Importfunktion dafür anbietet.

    Mein Code::Blocks versteht unsigned long long problemlos. Aber ich verwende auch den MinGW mit GCC 4.2.1 und nicht diese veraltete 3.x-Version. Vielleicht solltest du auch mal deinen Compiler updaten. Ansonsten gibt es noch in stdint.h ein typedef unsigned long long uint64_t. Und die Importfunktionen wurden geschrieben, damit die Leute eher von VC++ oder DevC++ umsteigen.



  • ..



  • Erhard Henkes schrieb:

    void wait() //ausführliche Version
    {
        std::cin.clear();
        std::streambuf* pbuf = std::cin.rdbuf();
        std::streamsize size = pbuf->in_avail();
        std::cin.ignore(size);
        std::cin.get();
    }
    

    Eine Anmerkung noch hierzu (weil sich diese Art den Puffer zu löschen immernoch hartnäckig hält): in_avail muss bei Konsolen nicht das liefern was man hier erwartet, und tut es oft auch nicht. Die Version mit ignore bis '\n' ist portabler.



  • [..



  • Der Unterschied ist für mich:
    Den Puffer leeren kann man problemlos mit Standard-C++ (sieht halt ein wenig kompliziert aus ;-)), also sollte man diese Möglichkeit auch nutzen.

    Für alles was plattformabhängig ist wie GUIs oder eben farbige Konsolen muss man ja zwangsweise die gegebenen Bibliotheken nutzen. Wobei ich auch da Anfängern nicht zur WinAPI raten würde, sondern zu SideWinders Improved Console oder einer der vielen GUI-Bibliotheken eben.

    Aber als Anfänger sollte man ja sowieso erstmal die Finger von den Nicht-Standard-C++-Sachen lassen, bis man ein soweit gehendes Verständnis der Sprache hat, dass man mit diesen Bibliotheken dann auch zurechtkommt.



  • Erhard Henkes schrieb:

    Gibt es eine Anweisung für Anfänger zum Austausch des GCC von Version 3 auf 4 in Code::Blocks? Ansonsten lasse ich das bei der standardmäßig mitgelieferten Version, damit ich die gleichen Ergebnisse habe. Ich verwende Code::Blocks nur für kleine Experimente, ansonsten MS Visual C++.

    Nicht dass ich wüsste. Der automatische MinGW-Installer (http://sourceforge.net/forum/forum.php?forum_id=817299 installiert glaube ich immer noch einen GCC in Version 3. Von Version 4 gibt's ja bisher leider nur den Technology Preview vom 4.2.1 und ganz neu eine Testing-Version vom 4.3.0. Die Installation ist zwar nicht übermäßig kompliziert (hauptsächlich Dateien in die richtigen Verzeichnisse entpacken), aber da man anschließend ein paar Pfade in Code::Blocks neu einstellen muss, würde ich das blutigen Anfängern auf jeden Fall nicht raten. Die sind nur enttäuscht wenn's nicht gleich funktioniert.



  • ..


Anmelden zum Antworten