Forum: PC-Programmierung Doxygen, kommentare weglassen


von return_of_the_µCNoob (Gast)


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

von Sven P. (Gast)


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
}

von µCNoob (Gast)


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

von Sven P. (Gast)


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?!

von StinkyWinky (Gast)


Lesenswert?

Wird das nicht mit der Option STRIP_CODE_COMMENTS erreicht?

von µCNoob (Gast)


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

von µCNoob (Gast)


Lesenswert?

@StinkyWinky
nee, da werden nur die Doxygen- Kommentare rausgeworfen...

Gruß

von ... .. (docean) Benutzerseite


Lesenswert?

Eingabeaufforderung ist dein Freund...

oder Start -> ausführen -> cmd

von µCNoob (Gast)


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

von jl (Gast)


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

von jl (Gast)


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

von µCNoob (Gast)


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

von Steffen (Gast)


Lesenswert?

Hast du denn den Vorschlag mit der cmd nun schon ausgeführt und es hat 
nicht funktioniert?

Steffen

von µCNoob (Gast)


Lesenswert?

ich habs versucht und er meinte:

Der Befehl "cpp" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Vlt. hab ich auch etwas falsch eingegeben??

Ne idee??

Gruß

von Simon K. (simon) Benutzerseite


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.

von µCNoob (Gast)


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ß

von jl (Gast)


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.

von µCNoob (Gast)


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

von Bobby (Gast)


Lesenswert?

Vielleicht hängt es daran, dass GCC nicht vorhanden ist.

von µCNoob (Gast)


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

von Johnny (Gast)


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.

von Gast3 (Gast)


Lesenswert?

Intallier cygwin oder mingw

von µCNoob (Gast)


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.

von Johnny (Gast)


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.

von Sven P. (Gast)


Lesenswert?

Wenn du dieses cpp ausführst, dann erscheint der ganze Kram ja ohne 
Kommentare aufm Bildschirm... die Original-Dateien werden davon aber 
nicht verändert, dass ist dir doch bewusst, ja?

von µCNoob (Gast)


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

von Sven P. (Gast)


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.

von Simon K. (simon) Benutzerseite


Lesenswert?

1
cpp -fpreprocessed cFile.c > cFileWithoutComments.c

So geht's auf dem ursprünglichen Weg ;)

von jl (Gast)


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

von Simon K. (simon) Benutzerseite


Lesenswert?

jl wrote:
> Der Preprozessor schmeisst alle Komentare heraus, auch die
> Doxygenformatierungen.
Ja klar, alle Kommentare. Woher soll er zwischen Doxygen-Kommentaren und 
normalen unterscheiden können ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.