Code::Blocks ... nichts fuer Anfaenger ?!
-
Moin Leute ,
ich habe mich vor kurzem entschieden C++ zu erlernen. Das theoretische ist nicht das Problem, aber das alles in die Praxis umzusetzen... Da hakt es bei mir ein wenig! Habe immer wieder mal mit neuen Tutorials angefangen, da dort etwas nicht ging und da auch nicht usw.! Aber bei einigen Schritten durch das Board hier, habe ich schon oft gesehen, dass man drauf hingewiesen wird, Code::Blocks als IDE zu benutzen. Sogar ich ^^ ... Der Sache bin ich nachgegangen, aber nach der Installation tritt das erste Problem auf:
Was für Voreinstellungen muss ich treffen, um einfach nur "Hello World" programmieren zu können ?!-> Also auf "Create a new Project" - das ist mir klar.
-> Aber dann ?! Öffnet sich ein Fenster, wo Dinge stehen, von denen ich noch nie was gehört habe
-> Was muss ich anklicken ?!
Die IDE ist, so wie mir der Anschein ist, eine Professionelle Sache fuer Top-Developer oder nicht ? xD
Hab' schon alles ausprobiert und getestet. Im Internet nach "Code::Blocks tutorials" gegoogled und das Forum durchsucht.
Ich danke euch fuer die Antworten und entschuldige mich fuer die blöden Fragen, die ich stelle ^^
mfg
haxorizor
-
1. Gehört das in Forum Compiler/IDE
2. Worauf willst du dein Programm laufen lassen? Tipp Console!
Für dich als Anfanger ist Console von Bedeutung.
Nacher noch Empty, Shared und Static Lib.
Der Rest ist je nachdem wohin du willst später von Bedeutung.
-
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:
- Code::Blocks starten
- Tipps wegclicken (nicht lesen)
- Ctrl-Shift-N
- 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; }
- F9
- speichern (als Endung ".cpp" verwenden)
- "Schwarze Konsole" (DOS-Box) geht auf, hier:
Computer name: XXX
User name: YYY
Windows-Directory: C:\WINDOWSSieben 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 wirdWenn 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.