Frage #3

Was ist die beste C/C++ Referenz?

Antwort:

Wie bei so Vielem im Leben, gibt es hier keine eindeutige Antwort. Die „beste“ Referenz zu finden ist eine Sache, die jeder Programmierer für sich entscheiden muss. Die passende Referenz zu finden hängt davon ab, wie detailliert ihr die Informationen haben wollt, wie gut ihr Programmieren könnt, wie aktuell ihr sie braucht, usw.

Hier ein paar Hilfestellungen und Wegweiser, damit ihr die richtige Referenz für euch findet:

proggen.org

c:lib:start

In diesem Wiki gibt es eine Referenz zur Standard C-Library. Sie ist aktuell leider (noch) nicht vollständig, es wurde aber großer Wert auf Anfängerfreundlichkeit und die Verwendung von Beispielen gelegt. Sollte es trotzdem Unklarheiten dazu geben, sind wir für Feedback und Verbesserungsvorschläge offen. Falls es eine fehlende Seite gibt, die du befüllen könntest, würden wir uns über deine Mitarbeit freuen :-) In beiden Fällen dient das Forum als Kontaktmöglichkeit.

cppreference.com

https://www.cppreference.com/

Dies ist eine kleine aber feine Referenz. Hier könnt ihr alle Funktionen finden, auch die etwas unbekannteren.
Die Seite ist recht übersichtlich gestaltet, es gibt hier und da Beispiele, die Unklarheiten beseitigen. Sehr gut geeignet, um z.B. mal schnell nachzusehen, welche Argumente fopen() jetzt genau nimmt.
So lange es nicht zu exotisch wird, ist dort alles zu finden was man braucht.

cplusplus.com

https://www.cplusplus.com/reference

Dies ist eine etwas detailliertere Referenz mit vielen Beispielen und recht guter Strukturierung.
Sie ist auch recht aktuell, und eignet sich hervorragend dafür, die Standardbibliothek (und die IOStream Klassenhierarchie) besser kennen zu lernen. Sie ist relativ komplett, Container und Algorithmen sind vorhanden.
Dies ist übrigens mein persönlicher Favorit, wenn es um die C- Standardbibliothek, Strings oder IOStreams geht.

SGI

http://www.martinbroadhurst.com/stl/ (die Seite von SGI ist nicht mehr verfügbar)

Diese Referenz ist genau genommen die Dokumentation für eine Implementierung der Standard Template Library, nämlich wie der Name schon sagt, der von SGI.
Nichtsdestotrotz enthält diese Seite nur standardkonforme Informationen. Dort findet ihr das meiste von der STL, und zwar hauptsächlich das was mit Algorithmen und Containern zu tun hat. Diese Referenz ist sehr ausführlich, es sind alle „Concepts“ und „Requirements“ zu den Templates enthalten. Es gibt auch einige Erklärungen, was das ganze überhaupt soll, was Iteratoren sind, was Container sind usw.
Was nicht in dieser Referenz enthalten ist, ist die C- Standardbibliothek; benutzt eine andere Referenz um diese nachzusehen. Die exoten, die oben erwähnt wurden, sind leider auch nicht Vorhanden.
Sie ist recht gut, um euch ein Bisschen mit der STL vertraut zu machen.

Apache

https://stdcxx.apache.org/doc/stdlibug/index.html
https://stdcxx.apache.org/doc/stdlibref/index.html

Das ist eigentlich auch eine Dokumentation für eine Implementierung der STL, nämlich der Apache STL, die auf der von Roguewave basiert.
Diese Referenz ist wirklich sehr gut, um die STL kennenzulernen: der erste Link gibt eine gute Einführung in die STL, und macht den User bekannt mit Iteratoren, Containern und Algorithmen. Der zweite Link enthält eine Ausführliche Referenz, sie enthält wirklich _alles_, was der C++ Standard hergibt. Unsere exoten sind endlich zu finden (und deren Existenz bewiesen ;-) ). C- Bibliotheken gibt es natürlich keine. sie ist gut Strukturiert, und alles ist gut zu finden.
Dies ist mein Favorit, wenn es um die STL oder andere Teile der Standardbibliothek geht.

Microsoft

https://docs.microsoft.com/en-us/cpp/standard-library/cpp-standard-library-reference
https://docs.microsoft.com/en-us/cpp/c-runtime-library/c-run-time-library-reference

Ich hoffe dass die Links noch funktionieren, wenn ihr das lest… Wenn ihr einen Weg gefunden habt eine dauerhafte URL zu bekommen, dann lasst es mich wissen.

Diese Referenz verdient eine Erwähnung, obwohl sie von Microsoft ist. Diese Referenz ist auch die Dokumentation der Standardbibliothek für den Visual C++ Compiler, lässt sich aber auch für allgemeine Programmierung verwenden.
Diese 2 Seiten rufen gemischte Gefühle in mir herauf: Einerseits sind die einzelnen Seiten ausführlich, präzise und verständlich. Es gibt viele Beispiele, und es ist eigentlich alles von A-Z enthalten (Die C-Bibliothek im ersten Link, die C++-Bibliothek im zweiten). Es ist die einzige Referenz die ich kenne, die auch die TR1 (z.B. std::tr1::shared_ptr) Erweiterungen enthält.
Allerdings vermiest einem die Erfahrung die Tatsache, dass man eigentlich absolut keine Chance hat, irgendetwas da drinnen wiederzufinden. Häufig wechselnde Adressen, undurchsichtig verschachtelte Struktur, lässt (bei mir zumindest) Chaos im Kopf entstehen. Die Suche ist nicht zu gebrauchen. Wenn ihr etwas dort finden wollt, solltet ihr auf Google mit „suchbegriff site:http://msdn.microsoft.com/library“ suchen. Außerdem werden dort oft Erweiterungen hineingemischt und relativ schlecht gekennzeichnet. Auf Schlüsselwörter wie „Erweiterung“ ist zu achten.

ISO/IEC

ISO/IEC 14882:1998
ISO/IEC 14882:2003

Dies ist die einzig wahre C++ Referenz. Sie enthält wirklich ALLES was im Standard vorkommt (vielleicht weil es der Standard ist? ;-) ).
Die Standardbibliothek beginnt bei Kapitel 17, und ist zugegebenermaßen nicht so wirklich einfach zu lesen. Ein kleines Problem stellt dar, dass es eigentlich ein offizielles ISO/IEC- Paper ist, und somit der Download kostenpflichtig ist. Ich bin mir sicher, ihr findet aber mit Google, dem suchbegriff „ISO/IEC 14882:1998“ und etwas Glück sicher irgendwo eine gratis- Kopie zum download.
Diese Referenz ist hauptsächlich dafür geeignet, Flamewars über die Verwendung der Standardbibliothek zu klären :-). Außerdem nützlich, wenn ihr versucht euer Programm von einem Compiler auf den anderen zu portieren und bei Fehlern herauszufinden, welcher der Compiler denn nun „Recht hat“, und welcher nicht.

Verbesserungsvorschläge

Hat dir diese Antwort geholfen? Wenn nicht oder wenn du Verbesserungs- bzw. Erweiterungsvorschläge hast, dann schreib das bitte einfach auf die Diskussionsseite.

Zurück zur FAQ-Übersicht