Einführung in Dokumentationskommentare in C++ im Rahmen der Lehre des Programmierens mit der Programmiersprache C++ [] (C++ Dokumentation C++ Doxygen C++), Lektion, Seite 721405
https://www.purl.org/stefan_ram/pub/c++_dokumentationskommentare_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Dokumentationskommentare in C++

Jede definierte  Entität sollte auch dokumentiert  werden. In dieser Lektion werden die Grundlage der Dokumentation im Doxygen -Format beschrieben. Diese Form der Dokumentation kann so auch verwendet werden, wenn das Programm Doxygen  nicht zur Verfügung steht. Doxygen  erlaubt es, aus einer mit Dokumentation angereicherten Datei automatisch Dokumentationsdateien zu erstellen.

Solche Kommentare werden auch als Dokumentationskommentare  (documentation comments, doc comments) bezeichnet. Alle anderen Kommentare kann man auch als Implementationskommentare  (implementation comments) ansehen, da sie sich mit Aspekten der Implementation  beschäftigen sollten. Diese Unterscheidung und die Festlegung zur Schreibweise von Dokumentationskommentaren wird allerdings nicht durch die Programmiersprache C++  festgelegt, sondern stellt eine zusätzliche Empfehlung  dar.

Kurzbeschreibungen

Direkt vor eine Definition kann ein einzeiliger Kommentar geschrieben werden, der die definierte Entität kurz beschreibt. Wird ein einzeiliger Kommentar mit drei Schrägstrichen "///" eingeleitet, ist er für Doxygen  als Dokumentationskommentar gekennzeichnet.

Normalerweise wird ein Dokumentationskommentar direkt vor  das zu Dokumentierende geschrieben. So finden sich in dem Beispielprogramm "kuckuck3d.cpp" Dokumentationskommentare vor jeder Funktionsdefinition.

kuckuck3d.cpp
#include <iostream> 
#include <ostream>
/// Refrain des Liedes "Auf einem Baum ein Kuckuck sass" ausgeben 
static void refrain() 
{ ::std::cout << "Sim sa la dim, bam ba,\n"; 
::std::cout << "Sa la du, sa la dim -\n"; }
/// Das Lied "Auf einem Baum ein Kuckuck sass" ausgeben 
int main() 
{ // Kann man das nicht noch verkuerzen? 
{ ::std::cout << "Auf einem Baum ein Kuckuck, -\n"; refrain(); 
::std::cout << "Auf einem Baum ein Kuckuck sass.\n"; } 
{ ::std::cout << "Da kam ein junger Jaeger, -\n"; refrain(); 
::std::cout << "Da kam ein junger Jaegersmann.\n"; } 
{ ::std::cout << "Der schoss den armen Kuckuck, -\n"; refrain(); 
::std::cout << "Der schoss den armen Kuckuck tot.\n"; }}

Das Werkzeug Doxygen  erlaubt es, Dokumentationsdateien automatisch aus einer wie beschrieben mit Dokumentationskommentaren angereicherten Quelldatei zu erzeugen. Dieses Werkzeug kann für einige verbreitete Betriebssysteme durch Datenfernübertragung leicht beschafft und installiert werden und darf in gewissem Rahmen kostenlos verwendet werden. Doxygen  bietet noch mehr Möglichkeiten als hier beschrieben werden—In dieser Lektion werden nur einfache Beispiele der Verwendung vorgestellt.

Doxygen  benötigt eine Konfigurationsdatei "Doxyfile", in der die Einstellungen gespeichert werden. Diese kann mit der Option "-g" (im Projektverzeichnis mit der Quelldatei) erzeugt werden.

Konsole [Ausschnitt, gekuerzt]
doxygen -g
Configuration file `Doxyfile' created. 
Now edit the configuration file and enter 
doxygen Doxyfile 
to generate the documentation for your project

In der Konfigurationsdatei muß die Option "EXTRACT_ALL", die festlegt, daß alle  in Frage kommenden Bestandteile des Quelltextes dokumentiert werden sollen, auf den Wert "YES" gesetzt werden. Die Sprache der Ausgabe kann als Deutsch ("German") festgelegt werden.

Doxyfile [Ausschnitte, alter Zustand]
EXTRACT_ALL            = NO 
OUTPUT_LANGUAGE = English

Doxyfile [Ausschnitt, neuer Zustand]
EXTRACT_ALL            = YES 
OUTPUT_LANGUAGE = German

Falls sich im Verzeichnis nur die zu dokumentierende Datei befindet, dann kann Doxygen  nun ohne weitere Einstellungen oder Argumente aufgerufen werden. Es sucht dann nach Quelldateien.

Konsole [Ausschnitt, gekuerzt]
doxygen
Searching for include files... 
Reading input files... 
Preprocessing kuckuck3d.cpp... 
Parsing file kuckuck3d.cpp... 
Generating index page... 
Generating file documentation... 
Generating style sheet...

Doxygen  erzeugt unter anderem eine HTML -Datei "kuckuck3d_8cpp.html" mit der gewünschten Dokumentation.

kuckuck3d.cpp-Dateireferenz [Dokumentation, Ausschnitt, gekuerzt]
Funktionen 
int main ()  
Das Lied "Auf einem Baum ein Kuckuck sass" ausgeben.
Dokumentation der Funktionen 
int main () 
Das Lied "Auf einem Baum ein Kuckuck sass" ausgeben
Erzeugt am Thu Dec 26 03:18:05 2002 von doxygen 1.3

Man beachte, daß die Dokumentation keine Beschreibung der Methode "refrain" enthält, obwohl ihr ein Dokumentationskommentar direkt vorangestellt wurde. Das liegt daran, daß diese Methode nicht öffentlich ist (sie wurde mit dem Schlüsselwort "static" definiert) und daher nicht zur Schnittstelle, also zu den nach außen sichtbaren (von außen aufrufbaren) Funktionen, der Quelldatei gehört. Da diese Entität nicht von außerhalb der Datei verwendet werden kann, braucht ihre Bedeutung auch nicht in der Dokumentation beschrieben zu werden.

Auch der Kommentar "// Kann man das nicht noch verkuerzen?" wird nicht in die Dokumentation aufgenommen, weil er nicht als Dokumentationskommentar gekennzeichnet ist. Dieser Kommentar betrifft ja auch nicht die Schnittstelle der Funktion, sondern ihre Implementation.

Detaillierte Beschreibung

Ein Dokumentationskommentar kann auch mit "/**" eingeleitet werden, wie in dem Programm "kuckuck3d1.cpp". Solch ein Dokumentationskommentar gilt dann als detaillierte Beschreibung  der Entität.

Es ist auch möglich. innerhalb eines mehrzeiligen Kommentars die Kurzbeschreibung mit dem Kommando "\brief" einzuleiten, die dann mit einer Leerzeile beendet werden muß, auf die der detaillierte Kommentar folgen kann.

Wenn ein Kommentar sich auf die ganze Datei beziehen soll, so muß dieser mit dem Kommando "\file" und dem Dateinamen eingeleitet werden.

Das Programmbeispiel "kuckuck3d1.cpp" zeigt Beispiele der zuletzt beschriebenen Möglichkeiten.

kuckuck3d1.cpp
/** \file kuckuck3d1.cpp 
\brief Refrain des Liedes "Auf einem Baum ein Kuckuck sass" ausgeben. 
 
Dieses Programm gibt die ersten drei Strophen des Liedes 
"Auf einem Baum ein Kuckuck sass" aus. */
#include <iostream> 
#include <ostream>
/// \brief Refrain des Liedes "Auf einem Baum ein Kuckuck sass" ausgeben. 
/// 
/// Diese Funktion gibt den gesamten Refrain des  
/// bekannten Liedes "Auf einem Baum ein Kuckuck sass" aus.
static void refrain() 
{ ::std::cout << "Sim sa la dim, bam ba,\n"; 
::std::cout << "Sa la du, sa la dim -\n"; }
/// Das Lied "Auf einem Baum ein Kuckuck sass" ausgeben. 
/** Diese Funktion gibt die ersten drei Strophen des Liedes 
"Auf einem Baum ein Kuckuck sass" aus. */
int main() 
{ { ::std::cout << "Auf einem Baum ein Kuckuck, -\n"; refrain(); 
::std::cout << "Auf einem Baum ein Kuckuck sass.\n"; } 
{ ::std::cout << "Da kam ein junger Jaeger, -\n"; refrain(); 
::std::cout << "Da kam ein junger Jaegersmann.\n"; } 
{ ::std::cout << "Der schoss den armen Kuckuck, -\n"; refrain(); 
::std::cout << "Der schoss den armen Kuckuck tot.\n"; }}

kuckuck3d1.cpp-Dateireferenz [Doxygen-Ausgabe, gekuerzt]
Refrain des Liedes "Auf einem Baum ein Kuckuck sass" ausgeben.
Funktionen
int main () 
Das Lied "Auf einem Baum ein Kuckuck sass" ausgeben.
Ausfuehrliche Beschreibung
Refrain des Liedes "Auf einem Baum ein Kuckuck sass" ausgeben.
Dieses Programm gibt die ersten drei Strophen des Liedes "Auf einem 
Baum ein Kuckuck sass" aus.
Dokumentation der Funktionen
int main()
Das Lied "Auf einem Baum ein Kuckuck sass" ausgeben.
Diese Funktion gibt die ersten drei Strophen des Liedes "Auf einem 
Baum ein Kuckuck sass" aus.
Erzeugt am Thu Dec 26 03:12:22 2002 von doxygen 1.3

Dokumentation von Wertfunktionen

Mit der ersten mit "@" anfangenden Zeile eines Dokumentationskommentars wird die allgemeine Beschreibung der folgenden Entität beendet. Die Markierung "@return" kennzeichnet die Beschreibung des Ergebnisses einer Funktion.

Dokumentation [Ausschnitt]
wochentage 
private int wochentage() 
Ergibt Zahl der Wochentage.  
Returns: 
Zahl der Wochentage

result.cpp
#include <iostream> 
#include <ostream>
/// Ergibt Zahl der Wochentage. 
/** 
* @return Zahl der Wochentage 
*/
int wochentage(){ return 7; }
int main(){ ::std::cout << 2 * wochentage() << '\n'; }

::std::cout
14

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721405 stefan_ram:721405 C++ Dokumentation C++ Doxygen C++ automatisch Dokumentation aus Quellcode erzeugen; source, source code,sourcecode, Programmier sprache C++ Sprache, C++, CXX, C+, Programm, Programme, C++-Programm C++ Sprache C++ Programmiersprache C++ c++-Programme, Standard C++, Programmieren in C++, Programmieren in CXX, Programmieren in CPP, Programmieren in Cplusplus, Die Programmiersprache C++, Die Programmiersprache CXX, Die Programmiersprache CPP, Die Programmiersprache Cplusplus, Die Programmier sprache C++, Die Programmier sprache CXX, Die Programmier sprache CPP, Die Programmier sprache Cplusplus, CXX-Programmierung, C++-Programmierung, CPP-Programmierung, c-plus-plus, cpluplus-Programmierung, ANSI-C++, ANSI-CXX, ANSI-CPP, ANSI C++, ANSI CXX, ANSI-cpluscplus ISO-C++, ISO-CXX, ISO CPP, ISO C++, ISO CXX, ISO/IEC-C++, ISO/IEC-CXX, ISO/IEC CPP, ISO/IEC C++, ISO/IEC CXX, IEC-C++, IEC-CXX, IEC CPP, IEC C++, IEC CXX, International Standard ISO/IEC 14882 First edition 1998-09-01, ISO/IEC 14882:1998(E), ISO/IEC 14882:2003(E), ASC X3, 7/27/98, c plus plus, C ++, cplusplus, c plus plus, Standard C+ programmieren, Stamdard C++ programmieren, Standart C+ programmieren, Stamdart C++ programmieren, INCITS/ISO/IEC 14882-1998, Information Technology - Programming Languages - C++ (formerly ISO/IEC 14882-1998), Programmieren in C++,Programmiersprache C++ CPP CXX Cplusplus c plus plus International Standard ISO/IEC 14882 First edition 1998-09-01, Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721405, slrprddef721405, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten.
https://www.purl.org/stefan_ram/pub/c++_dokumentationskommentare_de