Datum: 24.06.2008 08:47
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:
/* Initialsierung der C-Bus-Schnittstelle: */ ucCbusInit_Ready = 0; /* Die entsprechende Flag-Variable */ /* 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
Datum: 24.06.2008 09:14
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:
cpp -fpreprocessed test.c |
Aus
#include <stdio.h> int main(int argc, char *argv[]) { /* Bla */ double a; // Blufg a =/*test */ 4,2; printf("== %f\n", a); return 0; } |
wird dann
#include <stdio.h> int main(int argc, char *argv[]) { double a; a = 4,2; printf("== %f\n", a); return 0; } |
Datum: 24.06.2008 09:44
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).
#define VERSION 200 #define CONST_STRING const char * #if VERSION < 200 static CONST_STRING version = "2.xx"; #else static CONST_STRING version = "1.xx"; #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
Datum: 24.06.2008 09:48
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?!
Datum: 24.06.2008 10:20
Wird das nicht mit der Option STRIP_CODE_COMMENTS erreicht?
Datum: 24.06.2008 10:24
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
Datum: 24.06.2008 10:25
@StinkyWinky nee, da werden nur die Doxygen- Kommentare rausgeworfen... Gruß
Datum: 24.06.2008 10:43
Eingabeaufforderung ist dein Freund... oder Start -> ausführen -> cmd
Datum: 24.06.2008 11:08
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
Datum: 24.06.2008 11:13
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
Datum: 24.06.2008 11:18
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
Datum: 24.06.2008 11:27
@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
Datum: 24.06.2008 11:35
Hast du denn den Vorschlag mit der cmd nun schon ausgeführt und es hat nicht funktioniert? Steffen
Datum: 24.06.2008 11:44
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ß
Datum: 24.06.2008 13:38
µ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.
Datum: 24.06.2008 15:54
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ß
Datum: 24.06.2008 23:25
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.
Datum: 26.06.2008 09:51
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
Datum: 26.06.2008 10:42
Vielleicht hängt es daran, dass GCC nicht vorhanden ist.
Datum: 26.06.2008 14:20
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
Datum: 27.06.2008 14:41
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.
Datum: 30.06.2008 11:37
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.
Datum: 30.06.2008 11:45
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.
Datum: 30.06.2008 11:59
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?
Datum: 30.06.2008 13:20
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
Datum: 30.06.2008 13:23
µ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.
Datum: 30.06.2008 15:11
cpp -fpreprocessed cFile.c > cFileWithoutComments.c |
So geht's auf dem ursprünglichen Weg ;)
Datum: 30.06.2008 17:39
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
Datum: 30.06.2008 20:47
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 ;)
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel