Einführung in Dokumentationskommentare in C im Rahmen der Lehre des Programmierens mit der Programmiersprache C [] (C Dokumentation C Doxygen C), Lektion, Seite 721411
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.c" Dokumentationskommentare vor jeder Funktionsdefinition.

kuckuck3d.c
#include <iostream> 
#include <ostream>
/// Kehrreim des Liedes "Auf einem Baum ein Kuckuck sass" ausgeben 
static void kehrreim() 
{ printf( "Sim sa la dim, bam ba,\n" ); 
printf( "Sa la du, sa la dim -\n" ); }
/// Das Lied "Auf einem Baum ein Kuckuck sass" ausgeben 
int main() 
{ // Kann man das nicht noch verkuerzen? 
{ printf( "Auf einem Baum ein Kuckuck, -\n" ); kehrreim(); 
printf( "Auf einem Baum ein Kuckuck sass.\n" ); } 
{ printf( "Da kam ein junger Jaeger, -\n" ); kehrreim(); 
printf( "Da kam ein junger Jaegersmann.\n" ); } 
{ printf( "Der schoss den armen Kuckuck, -\n" ); kehrreim(); 
printf( "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. Eine weitere Einstellung sorgt fur eine an C  angepaßt Ausgabe.

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

Doxyfile [Ausschnitte, neuer Zustand]
OUTPUT_LANGUAGE        = German 
EXTRACT_ALL = YES 
OPTIMIZE_OUTPUT_FOR_C = YES

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.c... 
Parsing file kuckuck3d.c... 
Generating index page... 
Generating file documentation... 
Generating style sheet...

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

kuckuck3d.c File Reference [Dokumentation, Ausschnitt, gekuerzt]
Funktionen 
int main ()  
Das Lied "Auf einem Baum ein Kuckuck sass" ausgeben.

Man beachte, daß die Dokumentation keine Beschreibung der Methode "kehrreim" 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.

Detailierte Beschreibung

Ein Dokumentationskommentar kann auch mit "/**" eingeleitet werden, wie in dem Programm "kuckuck3d1.c". Solch ein Dokumentationskommentar gilt dann als detailierte 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.c" zeigt Beispiele der zuletzt beschriebenen Möglichkeiten.

kuckuck3d1.c
/** \file kuckuck3d1.c 
\brief Kehrreim 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 Kehrreim des Liedes "Auf einem Baum ein Kuckuck sass" ausgeben. 
/// 
/// Diese Funktion gibt den gesamten Kehrreim des  
/// bekannten Liedes "Auf einem Baum ein Kuckuck sass" aus.
static void kehrreim() 
{ printf( "Sim sa la dim, bam ba,\n" ); 
printf( "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() 
{ // Kann man das nicht noch verkuerzen? 
{ printf( "Auf einem Baum ein Kuckuck, -\n" ); kehrreim(); 
printf( "Auf einem Baum ein Kuckuck sass.\n" ); } 
{ printf( "Da kam ein junger Jaeger, -\n" ); kehrreim(); 
printf( "Da kam ein junger Jaegersmann.\n" ); } 
{ printf( "Der schoss den armen Kuckuck, -\n" ); kehrreim(); 
printf( "Der schoss den armen Kuckuck tot.\n" ); }}

kuckuck3d1.c File Reference [Doxygen-Ausgabe, gekuerzt]
Kehrreim des Liedes "Auf einem Baum ein Kuckuck sass" ausgeben.
Funktionen
int main () 
Das Lied "Auf einem Baum ein Kuckuck sass" ausgeben.
Ausfuehrliche Beschreibung
Kehrreim 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 Wed Dec 25 23:22:39 2002 von Doxygen 1.3

/** \brief append braces to buffer

\details ...

\param buf pointer to buffer with text with braces

\param bufsiz size of the buffer

\param end append at this position

\param count number of closing braces to be appended

\return nonzero to indicate an error



 */



int fill

( char * const buf,

  size_t const bufsiz,

  char * const end,

  size_t const count )

{ char * p = end;

  for( int i = count; i--; )

  { if( p - buf >= bufsiz - 1 )return 1;

    *p++ = '}'; }

  if( p - buf >= bufsiz )return 2;

  *p = 0;

  return 0; }

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 stefanram721411 stefan_ram:721411 C Dokumentation C Doxygen C automatisch Dokumentation aus Quellcode erzeugen; source, source code,sourcecode, Programmier sprache C, C, Programm, Programme, C-Programm C Sprache C Programmiersprache C C-Programme, Programmieren in C, Die Programmiersprache C, Die Programmier-Sprache C, C-Programmierung, Die Programmier Sprache C, ANSI-C, Standard C, ISO-C, International Standard ISO/IEC 9899:1999 (E), ANSI X3.159-1989, C90, C99, ANSI/ISO-C, ISO/IEC-C, IEC-C, ISO/IEC 9899:1999 (E), Standard C programmieren, Standart C programmieren, INCITS/ISO/IEC 9899-1999, Programming Languages - C (formerly ANSI/ISO/IEC 9899-1999) , 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, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 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, slrprd721411, slrprddef721411, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/c_dokumentationskommentare_de