Dokumentation in einer Datei, Implementierung in anderer
-
Hi,
ich habe die Dokumentation von ein paar Funktionen in einer Datei module.c und deren Implementierung in einer Datei module.impl (diese wird per #include in module.c eingefügt). Da es sich um eine Entwickler-Doku handelt will ich die Quellcode der Funktion immer direkt unter den Doku-String setzten. Das funktioniert auch bei allen Funktionen welche in module.c definiert sind, aber für diese aus module.impl zeigt mir Doxygen den Quellcode nicht unterhalb der Dokumentation an.
Kann man die Definition irgendwie zur Doku linken bzw. umgekehrt in einem Doxygen-Kommentar?
-
Ich mache es immer so:
- Deklaration in .h
- Definition in .c (oder .c++)
Entwicklerdoku kommt dann als Kommentar eber die Funktion im Header (.h). Alles andere halte ich fuer ungeeignet. Z.B. wuerde ein anderer C-Programmierer nie die Implementation in einer anderen Datei als .c suchen. Und auf das Folgen irgendwelcher includes haben bestimmt die wenigsten Lust. Auch stellt sich die Frage, warum die Entwicklerdoku getrennt von Deklaration und Definition werden soll. Das macht keinen Sinn. Sie sollte bei den Sachen stehen, die fuer die Entwickler interessant sind.
-
knivil schrieb:
Ich mache es immer so:
- Deklaration in .h
- Definition in .c (oder .c++)
Entwicklerdoku kommt dann als Kommentar eber die Funktion im Header (.h). Alles andere halte ich fuer ungeeignet. Z.B. wuerde ein anderer C-Programmierer nie die Implementation in einer anderen Datei als .c suchen. Und auf das Folgen irgendwelcher includes haben bestimmt die wenigsten Lust. Auch stellt sich die Frage, warum die Entwicklerdoku getrennt von Deklaration und Definition werden soll. Das macht keinen Sinn. Sie sollte bei den Sachen stehen, die fuer die Entwickler interessant sind.Die Dokumentation ist bei den Deklarationen aller Funktionen in der Implementierungsdatei. Bei diesen Funktionen handelt es sich um static Funktionen, daher muss ich die am Ende per #include in die module.c einfügen.
Aber die Idee mit der Header-Datei ist gar nicht schlecht
-
Habe dein Ratschlag umgesetzt, allerdings habe ich weiterhin das Problem, dass er den Quellcode in module.c nicht für die Dokumentation der Funktionen in module.h verwendet. Allerdings nur für static Funktionen, wenn ich einer der normalen Funktionen in module.h dokumentiere dann wird der Quellcode von dieser eingefügt.
-
Habe einen kleinen Hack gefunden:
Die Präprozessor-Sektion von Doxyfile:
ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = static:=STATIC EXPAND_AS_DEFINED = static SKIP_FUNCTION_MACROS = YES
dadurch wird jedes static durch STATIC ersetzt und Doxygen weiß nicht mehr, dass es sich um static Funktionen handelt, aber in der Doku sieht man ein dickes STATIC davor