Doxygen, kommentare weglassen

Gast #905633
Lesenswert?
• ▲
▼
Hallo, ich hoffe jemand kennt sich etwas mit dem tool doxygen aus??

Ich nutze es schon länger, hab jetzt jedoch ne kleinigkeit, die ich 
gerne besser lösen möchte

Hier ein Ausschnitt:
1
/* Initialsierung der C-Bus-Schnittstelle:                   */
2
  ucCbusInit_Ready = 0;  /* Die entsprechende Flag-Variable  */
3
                         /* zuruecksetzen !                  */
Ist nicht mein Code, ich muss den nur erweitern,...

Überall sind diese riesen Kommentarblöcke, was den Code etwas 
unübersichtlich macht.

Jetzt kommt Doxygen ins spiel,...
Um diese Unübersichtlichkeit wenigstens aus der Codeauflistung der HTML- 
Doku zu nehmen möchte ich dass doxygen die ganzen Kommentare nicht 
übernimmt.

Dazu gäbe es:
@cond ... @endcond

Wenn ich das jetzt jedoch in die Kommentare einfüge, geht die 
übersichtlichkeit im Code endgültig verloren...

Gibts da vielleicht noch eine andere, bessere Möglichkeit??

Danke schonmal...
Gruß µCnoob
Gast #905651
Lesenswert?
• ▲
▼
Du willst quasi den C-Code, den Doxygen als Doku anlegt, von allen 
Kommentaren befreien, was irgendwo vielleicht auch sinnvoll ist, da 
Doxygen den Kram ja sowieso dokumentiert...hm?

Jags einfach durch den Präprozessor:
1
cpp -fpreprocessed test.c

Aus
1
#include <stdio.h>
2

3
int main(int argc, char *argv[]) { /* Bla */
4
        double a; // Blufg
5

6
        a =/*test */ 4,2;
7

8
        printf("== %f\n", a);
9
        return 0;
10
}

wird dann
1
#include <stdio.h>
2

3
int main(int argc, char *argv[]) {
4
 double a;
5

6
 a = 4,2;
7

8
 printf("== %f\n", a);
9
 return 0;
10
}
Gast #905687
Lesenswert?
• ▲
▼
Ok, genau das meinte ich,...
aber ich habs nicht so ganz verstanden??

Ich kenne das mit dem Präprozessor nur mit #defines (wie in der Doku 
beschrieben).
1
#define VERSION 200
2
#define CONST_STRING const char *
3
#if VERSION < 200
4
  static CONST_STRING version = "2.xx";
5
#else
6
  static CONST_STRING version = "1.xx";
7
#endif

Aber wie mach ich das mit kommentaren??

Noch als kleine Anmerkung, ich nutze Windows, (ich wurde gezwungen, bin 
Linux nutzer, aber eben nicht überall,...)
Wie kann ich die Kommentare durch den Präprozessor in Windows 
rausschmeißen?? Wo stell ich das ein??

Danke,
µCnoob
Gast #905689
Lesenswert?
• ▲
▼
Naja, prinzipiell macht der Präprozessor sowas:
* Kommentare rausschmeißen, dann hats der Compiler einfacher
* #define und Co. auflösen und ersetzen
* Trigraphen ersetzen usw.

Mit -fpreprocessed teilt man dem mit, dass die Datei eigentlich schon 
verarbeitet wurde, d.h., dass obige Aufgaben schon erledigt sind (was 
natürlich nicht der Fall ist). Das veranlasst den Präprozessor, nur noch 
Kommentare zu entfernen.

Windows? Keine Ahnung, aber es gibt bestimmt andre Tools. Konnte Doxygen 
das nicht sogar auch erledigen?!
Gast #905717
Lesenswert?
• ▲
▼
Hi, danke,...

aber hast du vlt. ne Idee, wo man in windows die obigen Zeilen einfügen 
könnte??
cpp -fpreprocessed test.c

"Wie schön ist doch die shell!"

Ich hab echt keinen Schimmer, wie ich das Doxygen unter Windows 
beibringen soll, dass alle kommentare raus sollen! Ich seh auch niergens 
die möglichkeit obige Zeile irgendwo einzugeben??

Oder hat vlt. jemand Anderes von euch ne Idee??

Gruß
noob
Gast #905756
Lesenswert?
• ▲
▼
Ok, nur wie??
cpp -fpreprocessed test.c

Ist doch ne Linux direktion, wie mach ich das jetzt über cmd??

Ich muss zugeben, dass ich von Windows nur Grundkenntnisse besitze, 
mausspieler!! Sobalds an die windows-eingabeaufforderung, geht ist bei 
mir Ende,...

Wie genau geb ich das jetzt ein, bzw. geht das überhaupt??

Gruß
noob
Gast #905761
Lesenswert?
• ▲
▼
Ohja, wie schön wäre C-code ohne die dämlichen Kommentare. Und am besten 
noch viele Operationen kryptisch in einer zeile damit nur noch 
Eingeweihte und C-Gurus den Code lesen können.

Sei froh das dein Vorgänger alles schön sauber kommentiert hat, vor 
allem auch warum er die einzelnen Operationen durchführt.

Und wenn du jetzt auch noch Doxygen, ein Dokumentationstool, kastrieren 
willst, schade drum. Für was ist Doxygen denn da? Funktionsübersicht und 
Details der Parameter und Funktion, erweiterte Links mit PDF, Formeln 
etc. und zusätzlich mit Link zum (eingebetteten) Sourcecode. Aber auch 
dieser sollte dann Aufschluss über die Funktionsweise und den Ablauf 
geben. Sonst brauche ich diese Teile nicht in einer Doku.

Sorry das ich keine Hilfe zu deinem Problem geben konnte und statt 
dessen was ganz anderes geschrieben habe, aber ich habe leider mit zu 
vielen Leuten zu tun die verständliche Programmierung und Kommentierung 
ablehnen bzw als lästige Pflicht sehen.


JL
Gast #905765
Lesenswert?
• ▲
▼
Als Konsolenersatz gibt es das Programm "Command Prompt" (Start -> 
Programme -> Command Prompt). Dort kannst du das dann ausführen lassen.

Als Alternative würde ich dir aber in diesem Fall ein eigenes makefile 
empfehlen. Dort einfach make doku und die entsprechenden Aufrufe für 
c-compiler und doxygen aufrufen. Sieht dann genauso wie in Linux aus.



JL
Gast #905775
Lesenswert?
• ▲
▼
@jl
In erster Linie ist Doxygen dafür da, einen Überblick über die 
Funktionen und deren Aufgaben zu geben, NICHT über den gesamten 
Quelltext!
Wer dann doch mehr als die Struktur der Funktionen untereinander wissen 
will, der muss sich eh den Quellcode mit den entsprechenden Kommentaren 
ansehen! Da wird nix kastriert oder ähnliches, es wird mehr übersicht 
geschaffen!
Und wenn du den Code vor dir liegen hättest, dann würdest du hier nicht 
so großspurig daherreden sondern selber versuchen eine gewisse Struktur 
in diesen oftmals total überflüssigen Kommentarwirrwar zu bekommen!

@all
danke für die bisherige Hilfe,
wenn jemand eine Lösung hätte, wäre ich froh,...

Gruß
noob
Persönliche Seite #905933
Lesenswert?
• ▲
▼
µCNoob wrote:
> Hi, danke,...
>
> aber hast du vlt. ne Idee, wo man in windows die obigen Zeilen einfügen
> könnte??
> cpp -fpreprocessed test.c
>
> "Wie schön ist doch die shell!"

Und Windows hat keine Shell, ja ne ist klar!

Wie schon gesagt: Start->ausführen->"cmd"

EDIT: Hast du denn den gcc in deiner PATH Variable eingetragen?
Rechtsklick Arbeitsplatz->Eigenschaften->Erweitert->Umgebungsvariablen.
Gast #906106
Lesenswert?
• ▲
▼
Ich hab WinAVR im Path drin,
aber das sollte es doch tun??
Immerhin beinhaltet das ja GCC...

Aber vlt. mach ichs ja in der Falschen direction??

Ich habs folgendermaßen (in cmd.exe) eingegeben:
C:\Projektname\ProjectCode>cpp -fpreprocessed cFile.c

Mach ich was falsch??

Gruß
Gast #906556
Lesenswert?
• ▲
▼
geh mal mit
    c:
    cd Projektname\ProjectCode
    dir (nur als check ob du im richtigen Verzeichniss bist)
in dein code verzeichniss. Sonst sucht der compiler in deinem 
Ausgangsverzeichniss des File und findet es nicht

dort rufst du dann
    cpp -fpreprocessed cFile.c

sollte dann eigentlich funktionieren.
Gast #907770
Lesenswert?
• ▲
▼
Hey danke, sorry dass ich mich jetzt erst melde,...
der Vorschlag hat leider wieder nicht funktioniert??

Wieder das gleiche:
"Der Befehl "cpp" ist entweder falsch geschrieben oder
konnte nicht gefunden werden."

Noch ne Idee??
Sonst beiß ich halt in den sauren Apfel und lass es so,...
dann wird der spätere "Doku"- Leser eben gelegentlich über ein paar 
seltsame Kommentare stolpern.

g
µCn
Gast #908066
Lesenswert?
• ▲
▼
Ok, jetzt hatts geklappt,
also den Befehl in der Eingabekonsole auszuführen,...

Aber irgendwie ohne Wirkung??
Alle Kommentare sind noch drin,...

Hab ich noch irgendeine Einstellung bei Doxygen verpennt??

Gruß
µCn
Gast #909241
Lesenswert?
• ▲
▼
Man könnte z.B. auch mit dem Editor PSPad oder einem anderen Tool über 
alle Dateien mit "regulären Ausdrücken" nach den Kommentaren Suchen und 
diese durch nichts ersetzen, also löschen. Geht also alles mit zwei, 
drei Mausklicks und dem entsprechenden regulären Ausdruck, dessen Syntax 
ich aber leider nicht mächtig bin. Hier gibts sicher Leute die da 
weiterhelfen können.
Gast #911434
Lesenswert?
• ▲
▼
Hi, Danke erstmal, aber:
cygdrive runtergeladen und versucht:

Gleiche wie mit der Eingabeaufforderung,...
Der Code wird zwar durchlaufen, aber in der Doxygendoku tauchen die 
Kommentare weiterhin auf...
Langsam komm ich mir richtig blöd vor, ;-)
Naja, vlt. hat ja noch jemand einen Rat

Gruß

PS:
@Jonny
Danke für deinen Vorschlag, aber,...
Da hatte jl schon recht:
"wie schön...ohne dämliche kommentare"
Die Kommentare will ich ja nicht löschen, sondern nur aus der 
Doxygendoku entfernen. Im html sollen nur die Funktionen dokumentiert 
werden, für jemanden der neue Funktionen hinzufügen möchte und das 
innenleben vorhandener Funktionen nicht wissen muss. Aber es kann ja 
auch sein, dass man vorhandene Funktionen ändern muss, dafür sind dann 
die Kommentare im Code (.c-, .h- file) sehr wichtig.
Gast #911446
Lesenswert?
• ▲
▼
Ach so, sag das doch gleich ;-)
In diesem Fall kannst Du die Funktionen lediglich im H File mit 
Doxygen-Kommentaren versehen und die C Files gar nicht erst von Doxygen 
verarbeiten lassen. Dann hast Du alle Funktionen dokumentiert, ohne das 
Innenleben zu zeigen.
Gast #911590
Lesenswert?
• ▲
▼
Hm,...
d.h. dann kann ich damit ga nicht aus der Doxygen- Doku die Kommentare 
raus nehmen??

Naja egal, dann werd ichs eben so machen wies Jonny vorgeschlagen hat.

Danke euch allen für eure Hilfe,...

Gruß
µCn
Gast #911595
Lesenswert?
• ▲
▼
µCNoob wrote:
> Hm,...
> d.h. dann kann ich damit ga nicht aus der Doxygen- Doku die Kommentare
> raus nehmen??
Na sicher, musst die Ausgabe ohne die Kommentare halt umleiten und 
abspeichern. Wahlweise halt den CPP als Präprozessor für Doxygen 
benutzen, siehe Anleitung.

> Naja egal, dann werd ichs eben so machen wies Jonny vorgeschlagen hat.
Jubb, das ist die eleganteste Variante.
Gast #911856
Lesenswert?
• ▲
▼
Ich glaube das führt alles zu nichts.

So wie ich Doxygen benutzte liest es das C-File, extrahiert den 
Dokumentationsteil und bindet gleichzeitig den Code in HTML ein um zu 
verlinken. Der Preprozessor schmeisst alle Komentare heraus, auch die 
Doxygenformatierungen.


Also hilft nur ein eigener Filefilter (selber schreiben) der alle 
Kommentare // bis Zeilenende und /*...*/ herausfiltert, die 
Doxygenformate /*! und //! aber drinlässt und dann als File-Inputfilter 
in Doxygen als Vorfilter eingebunden wird.


JL

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren