- 7 Jan 2011
- 7,803
- 16,631
Hallo,
da in den letzten Wochen/Monaten öfters mal gefragt wurde, wie diverse Coder (u.A. Ich) C/++ gelernt haben. Als erstes gehe ich auf Bücher/Links und Referenzen ein, welche für Anfänger, aber auch für fortgeschrittene gut als Nachschlagewerk dienen. Falls Ihr das gerade hier am lesen seid, weil ihr euch schnell einen Hack (für CS:GO) pasten wollt bzw. "selbst schreiben" wollt: schlagt euch den Gedanken gleich wieder aus dem Kopf. Ihr werdet mehr Zeit darin investieren, Menschen mit euren abgefuckten Fragen zu nerven, als zum Ziel zu kommen. Ebenso sind YouTube Videos/Crashkurse zu 99,9% suboptimal und absolut nicht empfehlenswert!
Auf https://isocpp.org/ lohnt es sich hin und wieder nach Updates des Standards zu schauen. http://en.cppreference.com dient als Dokumentation der Standard Bibliothek. Ist einfacher online nachzuschauen, als im durch alle Files im Code.
Bücher:
Referenzen:
Ich lege euch eins ans Herz: wenn ihr die Sprache lernt, haltet euch an den aktuellen Standard. Ihr werdet es a) nicht bereuen und b) erleichtert es einem idR. die Arbeit ungemein, gerade wenn es um Arbeit mit Containern und/oder strings geht. Daher schaut euch die Guidelines an ;--)
Eigentlich benötigt man nur einen stinknormalen Editor und einen Compiler um sein Programm kompilieren und ausführen zu können, allerdings nimmt meist eine gute IDE einem viel Arbeit. Da der Otto-Normaluser idR. Windows verwendet, empfehle ich für Windows Visual Studio 2017 Community, die Community Version ist kostenlos, allerdings müsst ihr euch nach spätestens 30 Tagen mit eurem Microsoft Konto anmelden. Wer keins hat, sollte sich also eins erstellen. Für die, die unter OSX oder Linux sind: installiert euch gcc/g++ und/oder den C/C++ compiler von LLVM (clang/clang++) (bevorzuge Clang, deren Fehlerausgabe ist weitaus überlegen gegenüber der von gcc), Sublime 3 Editor und go. Alternativ gäbe es auch von JetBrains die CLion IDE, frisst aber etwas Resourcen.
Tools:
Configs:
Ich spar mir den Virustotal Link mal, da man den Inhalt der Configs einfach mit einem Editor anschauen kann, und es nur plain Text ist.
________________________________________________________________________
Linux (Ubuntu 16.04):
OSX:
Falls Ihr noch kein homebrew installiert habt: https://brew.sh/ Installation sollte klar sein.
Entweder Ihr schaut mittels clang++/cmake --help wie die beiden Programme funktionieren, oder Ihr verwendet das folgende Template. Ihr müsst lediglich den Pfad für die Compiler und den Namen des Projektes bearbeiten. Die Ordnerstruktur sollte so aussehen:
Die 8 steht für die Anzahl der Threads die Ihr verwenden wollt.
________________________________________________________________________
Unter OSX gibt es natürlich auch XCode. Allerdings verabscheue ich diese schwule scheiß IDE und arbeite lieber mit Sublime Text 3
Grüße,
ReactiioN
da in den letzten Wochen/Monaten öfters mal gefragt wurde, wie diverse Coder (u.A. Ich) C/++ gelernt haben. Als erstes gehe ich auf Bücher/Links und Referenzen ein, welche für Anfänger, aber auch für fortgeschrittene gut als Nachschlagewerk dienen. Falls Ihr das gerade hier am lesen seid, weil ihr euch schnell einen Hack (für CS:GO) pasten wollt bzw. "selbst schreiben" wollt: schlagt euch den Gedanken gleich wieder aus dem Kopf. Ihr werdet mehr Zeit darin investieren, Menschen mit euren abgefuckten Fragen zu nerven, als zum Ziel zu kommen. Ebenso sind YouTube Videos/Crashkurse zu 99,9% suboptimal und absolut nicht empfehlenswert!
Auf https://isocpp.org/ lohnt es sich hin und wieder nach Updates des Standards zu schauen. http://en.cppreference.com dient als Dokumentation der Standard Bibliothek. Ist einfacher online nachzuschauen, als im durch alle Files im Code.
Bücher:
- C++ Primer 5.th Edition
- Nicht nur ich, ebenso sogut wie jeder der das Buch gelesen hat wird das Buch empfehlen. Ja es ist auf Englisch, was allerdings bei einer Hochsprache üblich ist. Sämtliche Referenzen sind idR. auf Englisch.
- C++ für Spieleprogrammierer
- Ein Kollege von mir hat dadurch C++ gelernt. Ich hab bei ihm mir das Buch angeschaut, der Autor verfasst die Themen kurz aber mit genug Informationen.
- 3D-Spielprogrammierung mit DirectX 9 und C++
- Ist sozusagen der 2. Teil vom 2. Link. Für Leute die in die Richtung wollen, sicherlich nicht verkehrt.
- Windows Internals 6.th Edition (Teil 1 | Teil 2)
- Solltet Ihr euch definitiv durchlesen, wenn Ihr etwas auf der Treiberebene vor habt. Bessere Referenzen zu Memory Management & Driver I/O gibt es imo nicht.
Referenzen:
- http://en.cppreference.com/w/
- https://github.com/rigtorp/awesome-modern-cpp
- https://herbsutter.com/elements-of-modern-c-style/
- https://isocpp.org/
- http://www.cplusplus.com/reference/
- MSDN WinAPI Referenzen
- https://google.com
Ich lege euch eins ans Herz: wenn ihr die Sprache lernt, haltet euch an den aktuellen Standard. Ihr werdet es a) nicht bereuen und b) erleichtert es einem idR. die Arbeit ungemein, gerade wenn es um Arbeit mit Containern und/oder strings geht. Daher schaut euch die Guidelines an ;--)
Eigentlich benötigt man nur einen stinknormalen Editor und einen Compiler um sein Programm kompilieren und ausführen zu können, allerdings nimmt meist eine gute IDE einem viel Arbeit. Da der Otto-Normaluser idR. Windows verwendet, empfehle ich für Windows Visual Studio 2017 Community, die Community Version ist kostenlos, allerdings müsst ihr euch nach spätestens 30 Tagen mit eurem Microsoft Konto anmelden. Wer keins hat, sollte sich also eins erstellen. Für die, die unter OSX oder Linux sind: installiert euch gcc/g++ und/oder den C/C++ compiler von LLVM (clang/clang++) (bevorzuge Clang, deren Fehlerausgabe ist weitaus überlegen gegenüber der von gcc), Sublime 3 Editor und go. Alternativ gäbe es auch von JetBrains die CLion IDE, frisst aber etwas Resourcen.
Tools:
- ReSharper++
- Meine absolute Empfehlung. Falls ihr eine Uni-Mail habt, könnt ihr euch das Education Pack abholen, und Zahlt nichts für Produkte von JetBrains. Bessere Syntax Highlighing, eigene "IntelliSense" Engine, welche weitaus besser ist als die von Microsoft, etc..
- Visual Assist X
- Alternative zu ReSharper++, verbessertes Syntax Highlighing, verbessert IntelliSense.
- Text Sharp
- Aktiviert Truetype Fontrendering in Visual Studio. Ohne ist gar nicht mehr denkbar in meinen Augen.
- Code Alignment
- Vereinfacht die Formatierung vom Code. Ebenso ohne ist gar nicht mehr denkbar.
- Atomineer
- Um den geschriebenen Code zu dokumentieren. Seit ich mit
frk arbeite werden alle Header dokumentiert. Nett wenn man im Team arbeitet, oder seine Arbeit veröffentlichen möchte. 30 Tage Trail, danach muss man für Zahlen. Alternative wäre DoxyGen für den Sublime Text 3 Editor.
- Um den geschriebenen Code zu dokumentieren. Seit ich mit
- Line Endings Unifier
- Mit Abstand eins meiner fav. Extensions. Die Lineendings von Windows (^M) sind einfach nur scheiße. Wenn man dann noch eben ein Shellscript oder der Gleichen schreibt, es mit ^M -LF speichert, kann man diese oft nicht ausführen und muss sie erst mit vim oder einem anderen Texteditor öffnen und mit UNIX-LF abspeichern.
- Markdown Editor
- Gerade wenn man mit git bzw. Repositories arbeitet, schreibt man hin und wieder mal README- oder andere Markdownfiles. Um dafür nicht extra einen guten Texteditor öffnen zu müssen bietet sich die Extension gut an.
Configs:
Ich spar mir den Virustotal Link mal, da man den Inhalt der Configs einfach mit einem Editor anschauen kann, und es nur plain Text ist.
- for Visual Studio (2015 / 2017)
- for ReSharper++
________________________________________________________________________
Linux (Ubuntu 16.04):
Code:
bash <(wget -O- --no-check-certificate 'https://paste.ee/r/roq9F/0')
OSX:
Falls Ihr noch kein homebrew installiert habt: https://brew.sh/ Installation sollte klar sein.
Code:
brew install cmake
brew install llvm
Entweder Ihr schaut mittels clang++/cmake --help wie die beiden Programme funktionieren, oder Ihr verwendet das folgende Template. Ihr müsst lediglich den Pfad für die Compiler und den Namen des Projektes bearbeiten. Die Ordnerstruktur sollte so aussehen:
- <Projekt>
- CMakeLists.txt
-
Code:
set( CMAKE_C_COMPILER "/path/to/c/compiler" ) set( CMAKE_CXX_COMPILER "/path/to/c++/compiler" ) cmake_minimum_required( VERSION 3.5 ) project( "TestProject" ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++1z" ) file( GLOB SOURCES "src/*.cpp" ) set( EXECUTABLE_OUTPUT_PATH ${dir} ) set( PROJECT_LINK_LIBS pthread ) add_executable( "TestProject" ${SOURCES} ) target_link_libraries( "TestProject" ${PROJECT_LINK_LIBS} )
-
- src/
- Hier kommen eure .hpp / .cpp Files rein.
- build/
- Hier werden die CMAKE Files und die erstellte Anwendung gespeichert.
- CMakeLists.txt
- Linux
-
Code:
set( CMAKE_C_COMPILER "clang" ) set( CMAKE_CXX_COMPILER "clang++" )
-
- OSX
-
Code:
set( CMAKE_C_COMPILER "/usr/local/opt/llvm/bin/clang" ) set( CMAKE_CXX_COMPILER "/usr/local/opt/llvm/bin/clang++" )
-
Code:
cd <Verzeichnis>
cd build && rm -rf * && cmake .. && make -j8
Die 8 steht für die Anzahl der Threads die Ihr verwenden wollt.
________________________________________________________________________
Unter OSX gibt es natürlich auch XCode. Allerdings verabscheue ich diese schwule scheiß IDE und arbeite lieber mit Sublime Text 3
Grüße,
ReactiioN
Last edited: