Forum: PC-Programmierung Doxygen: Makro-Definitionen


von Walter T. (nicolas)


Lesenswert?

Hallo zusammen,

ich suche gerade, wie man Makro-Definitionen sinnvoll in Doxygen 
einpflegt.

So sieht es momentan undoxydiert aus:
1
    /* Buffers:
2
     *
3
     * TEXTBUFFERSIZE_BYTES: Hilfspuffer fuer Textstrings
4
     * AUX_BUFFERSIZE_BYTES: Hilfspuffer fuer lokale Puffer mit MALLOC
5
     * MAX_BLOCK_NBYTES: Maximaler Speicherblock fuer LCD-Zwecke (z.B. Bitmaps im RAM)
6
     */
7
    #if defined( STM32F10x )
8
        #define MAX_BLOCK_NBYTES 2048
9
        #define AUX_BUFFERSIZE_BYTES 2048
10
        #define TEXTBUFFERSIZE_BYTES 100
11
12
    #elif defined( STM32F4XX )
13
        #define MAX_BLOCK_NBYTES 32768
14
        #define AUX_BUFFERSIZE_BYTES 8192
15
        #define TEXTBUFFERSIZE_BYTES 100
16
17
    #else
18
        /* Am PC-Prototypen Puffer vorsorglich eng einstellen, um Ueberlaufeffekte sichtbar zu
19
           machen */
20
        #define MAX_BLOCK_NBYTES 2048
21
        #define AUX_BUFFERSIZE_BYTES 2048
22
        #define TEXTBUFFERSIZE_BYTES 100
23
24
    #endif

"Besonderheit" ist hier, dass die Beschreibung für die Makros in allen 
Fällen gleich ist, und nur die Werte unterschiedlich. Die Werte brauchen 
in der DoXu auch gar nicht aufzutauchen.

Eine Google-Suche nach den unterschiedlichen Kombinationen aus "Doxygen" 
und "Makros" schickt mich nur auf Stackoverflow im Kreis, die 
eigentliche Dokumentation schweigt sich ja zu Makros beharrlich aus.

Da ich nicht annehme, dass dieser Anwendungsfall bei den 
µC-Programmierern, die Doxygen benutzen, Seltenheit hat: Wie macht ihr 
das?

: Bearbeitet durch User
von DPA (Gast)


Lesenswert?

Ich hab keine besonders gute Lösung, aber vielleicht reicht es ja.
1
#if defined( STM32F10x )
2
  #define T_MAX_BLOCK_NBYTES 2048
3
  #define T_AUX_BUFFERSIZE_BYTES 2048
4
  #define T_TEXTBUFFERSIZE_BYTES 100
5
#elif defined( STM32F4XX )
6
  #define T_MAX_BLOCK_NBYTES 32768
7
  #define T_AUX_BUFFERSIZE_BYTES 8192
8
  #define T_TEXTBUFFERSIZE_BYTES 100
9
#else
10
  /* Am PC-Prototypen Puffer vorsorglich eng einstellen, um Ueberlaufeffekte sichtbar zu machen */
11
  #define T_MAX_BLOCK_NBYTES 2048
12
  #define T_AUX_BUFFERSIZE_BYTES 2048
13
  #define T_TEXTBUFFERSIZE_BYTES 100
14
#endif
15
16
#define MAX_BLOCK_NBYTES     T_MAX_BLOCK_NBYTES     //!< Hilfspuffer fuer Textstrings
17
#define AUX_BUFFERSIZE_BYTES T_AUX_BUFFERSIZE_BYTES //!< Hilfspuffer fuer lokale Puffer mit MALLOC
18
#define TEXTBUFFERSIZE_BYTES T_TEXTBUFFERSIZE_BYTES //!< Maximaler Speicherblock fuer LCD-Zwecke (z.B. Bitmaps im RAM)

von Walter T. (nicolas)


Lesenswert?

Rückwärts definierte Doxygen-Kommentare scheinen bei Makros ohne 
Leerzeile nicht zu funktionieren.

Ich habe es jetzt erst einmal so gelöst:
1
    /** @name Buffers
2
     *
3
     * @{ */
4
    #if defined( DOXYGEN )
5
        /** Hilfspuffer fuer Textstrings */
6
        #define TEXTBUFFERSIZE_BYTES
7
8
        /** Hilfspuffer fuer lokale Puffer mit MALLOC */
9
        #define AUX_BUFFERSIZE_BYTES
10
11
        /** Maximaler Speicherblock fuer LCD-Zwecke (z.B.\ Bitmaps im RAM) */
12
        #define MAX_BLOCK_NBYTES
13
14
    #elif defined( STM32F10x )
15
        #define MAX_BLOCK_NBYTES 2048
16
        #define AUX_BUFFERSIZE_BYTES 2048
17
        #define TEXTBUFFERSIZE_BYTES 100
18
19
    #elif defined( STM32F4XX )
20
        #define MAX_BLOCK_NBYTES 32768
21
        #define AUX_BUFFERSIZE_BYTES 8192
22
        #define TEXTBUFFERSIZE_BYTES 100
23
24
    #else
25
        /* Am PC-Prototypen Puffer vorsorglich eng einstellen, um Ueberlaufeffekte sichtbar zu
26
           machen */
27
        #define MAX_BLOCK_NBYTES 2048
28
        #define AUX_BUFFERSIZE_BYTES 2048
29
        #define TEXTBUFFERSIZE_BYTES 100
30
31
    #endif
32
    /** @} */

von Walter T. (nicolas)


Lesenswert?

So richtig glücklich bin ich mit der Dokumentation von Makros immer noch 
nicht. Insbesondere was Pinouts angeht.

Gibt es irgendwo ein Beispiel, wo man sich die Dokumentation des Pinouts 
eines mittelmäßig kleinen Mikrocontroller-Projekt mal abgucken kann?

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.