Doxygen: Numerische Enum-Werte anzeigen, ohne CSS zu ändern?

Lesezeit: 3 Minuten

Benutzeravatar von noti
nicht ich

Ich brauche eine Möglichkeit, Doxygen dazu zu bringen, den tatsächlichen Wert des Enumerationsmitglieds in der Doxygen-Ausgabe anzuzeigen. Ich habe zum Beispiel:

///MyEnum
typedef enum My_Enum
{
MY_ENUM_0,///<MY_ENUM_0
MY_ENUM_1,///<MY_ENUM_1
MY_ENUM_2 ///<MY_ENUM_2
} My_Enum;

Die Ausgabe ist:

MyEnum.
Enumerator:
MY_ENUM_0
      MY_ENUM_0.
MY_ENUM_1
      MY_ENUM_1.
MY_ENUM_2
      MY_ENUM_2.

Was ich will ist:

Enumerator:
MY_ENUM_0
          0 MY_ENUM_0.
MY_ENUM_1
          1 MY_ENUM_1.
MY_ENUM_2
          2 MY_ENUM_2.

Oder etwas ähnliches.

  • Kürzlich habe ich diese Frage wieder gesehen, mein Rat war, ein Problem im Doxygen Issue Tracker zu öffnen (github.com/doxygen/doxygen/issues/new)

    – Albert

    19. September 2018 um 17:27 Uhr

  • siehe stackoverflow.com/questions/52387561/…

    – Albert

    19. September 2018 um 17:54 Uhr

Benutzeravatar von Nick
Nick

Es gibt keine Möglichkeit, dies direkt von Doxygen aus zu tun, an die ich denken kann. Doxygen ist kein C-Compiler. Es wird also nicht den Wert einer Aufzählung ableiten, die eine Kompilierzeitkonstante ist.

Das Nächste, was Doxygen tun kann, ist Erweitern Sie Ihre Makros selektiv da es einen C-Präprozessor hat. Wenn Sie also einer Konstante einen Wert zugewiesen haben, der durch Präprozessorerweiterung abgeleitet wurde, kann doxygen die Makros erweitern und Ihnen zeigen, was zugewiesen wird.

Aufbauend auf der Antwort von TheCodeArtist könnten Sie erwägen, ein Skript zu schreiben, das vor doxygen ausgeführt wird, Kopien Ihrer Dateien erstellt und nach diesem Muster sucht:

enum *** {
    ***, ///< %VAL%:

und ersetzt jedes Vorkommen von %VAL% durch den Wert, den Sie haben sollten, damit Sie nicht manuell mit den Zahlen Schritt halten müssen. Nachdem doxygen ausgeführt wurde, müssten die Originaldateien, die die %VAL%-Token enthalten, ersetzt werden. Das ist keine besonders elegante oder robuste Lösung.

  • Siehe meinen Kommentar mit der Frage.

    – Albert

    20. September 2018 um 15:51 Uhr

  • @albert Danke für diesen Vorschlag, danke auch für die Verlinkung der anderen Frage zu diesem Thema. Ich denke, das ist eine gute Idee für ein neues Feature. Ich habe mich in einer Situation befunden, in der ich einen Aufzählungswert mehr als ein paar Mal halb manuell berechnen musste.

    – Nik

    20. September 2018 um 19:34 Uhr

Benutzeravatar von TheCodeArtist
Der CodeKünstler

Mit doxygen können wir dokumentieren:

  • Der enum
  • Es ist Werte
  • A Beschreibung von jedem Wert

Das folgende Code-Snippet beschreibt ein Beispiel für alle 3 oben genannten.

/*! \enum My_Enum
* Documentation of the enum type.
*/

typedef enum My_Enum {
    MY_ENUM_0, /*!< Document the value 0 */
    MY_ENUM_1, /*!< Document the value 1 */
} My_Enum;

/*! \var My_Enum MY_ENUM_0
 * The description of the MY_ENUM_0. Can contain its enumerated name */

/*! \var My_Enum MY_ENUM_1
 * The description of the MY_ENUM_1. Can contain its enumerated name*/

Beachten Sie auch, dass die Erweiterung von Makros/Enumerationen NICHT innerhalb von Doxygen-Kommentaren erfolgt. Wenn in einem Doxygen-Kommentar welche verwendet werden, müssen sie mit erweitert werden INPUT_FILTER. Zum Beispiel:

INPUT_FILTER = sed /MY_ENUM_0/0

ist für das folgende Code-Snippet erforderlich

typedef enum My_Enum {
    MY_ENUM_0, /*!< MY_ENUM_0 */
    ...

Überprüfen Sie dies auch antworten Einzelheiten zu den verschiedenen Doxygen-Kommentarstilen:

  • ///< <comment>
  • /*!< <comment> */

  • Dies beantwortet die Frage nicht. Der Wert von MY_ENUM_0 ist 0, wird aber im Doxygen-Dokument, das durch den Code in Ihrer Antwort generiert wird, nicht sichtbar sein.

    – Etienne

    9. April 2014 um 12:09 Uhr

  • Der Doxygen-Kommentar /*!<Document the value 0 */ wird mit angezeigt MY_ENUM_0 in der so erstellten Dokumentation Beispielantwort. Jeder solche Kommentar müsste sein value is 0, value is 1… usw. für jedes Mitglied der Aufzählung.

    – TheCodeArtist

    9. April 2014 um 12:20 Uhr


  • Da Sie selbst “0” geschrieben haben, fragt das OP, wie Doxygen die “0” erzeugen soll.

    – Etienne

    9. April 2014 um 12:21 Uhr

  • Ja, du hast recht. Beinhaltet manuellen Aufwand. Dies ist das nächste, was ich weiß, das funktioniert.

    – TheCodeArtist

    9. April 2014 um 12:23 Uhr


  • Sicher, ich wollte nicht unhöflich sein, das Problem ist, dass Enum-Werte mithilfe von Makros oder anderen Enum-Werten definiert werden können, und es dann ziemlich kompliziert werden kann, zu wissen, welchen Wert die Enum hat, und sie von Hand zu dokumentieren/aktualisieren.

    – Etienne

    9. April 2014 um 12:26 Uhr

1447500cookie-checkDoxygen: Numerische Enum-Werte anzeigen, ohne CSS zu ändern?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy