Macro-Definitionen aus Doku entfernen



  • Hi,

    ich dokumentiere gerade ein etwas größeres Macro-Framework das viel Boilerplate-Code erzeugt. Der Code hinter den Macros der dafür zuständig ist, ist allerdings wenig interessant für den Benutzer bzw. die Doku, daher würde ich gerne darauf verzichten, dass Doxygen die Definitionen eines Macros bzw. den Wert eines Macros mit aufnimmt. Geht das irgendwie?



  • Geht da nicht wie mit anderem Code auch?

    #ifdef IN_DOXYGEN
    // hidden code
    #endif
    


  • rüdiger schrieb:

    Geht da nicht wie mit anderem Code auch?

    #ifdef IN_DOXYGEN
    // hidden code
    #endif
    

    Das kann doch gar nicht funktionieren, da ich dann ja die Macrodefinition da rein schreiben müsste. Wobei es ein Versuch wert wäre, aber ich kann mir gut vorstellen, dass er Doku zu Elemente die er nicht findet verwirft.



  • ups, sollte #ifndef sein.



  • Doxygen-User schrieb:

    rüdiger schrieb:

    Geht da nicht wie mit anderem Code auch?

    #ifdef IN_DOXYGEN
    // hidden code
    #endif
    

    Das kann doch gar nicht funktionieren, da ich dann ja die Macrodefinition da rein schreiben müsste. Wobei es ein Versuch wert wäre, aber ich kann mir gut vorstellen, dass er Doku zu Elemente die er nicht findet verwirft.

    1. du musst im "Doxyfile" ein Marko definieren. Da gibt's einen Eintrag für vordefinierte Markos, da schreibst du einfach das IN_DOXYGEN dazu.
    #ifdef IN_DOXYGEN
        //! does this and that, and maybe more. and calls aunt annie!
        #define MY_BAD_LONG_MACRO(a, b, c) implementation-defined // oder "implementation-detail" oder sowas
    #else
        #define MY_BAD_LONG_MACRO(a, b, c) \
            do \
            { \
                if ((a) + (b) + (c) == 123) \
                    foo(a).bar(b).baz(c); \
                do_this(a); \
                do_that(b); \
                call_aunt_annie(); \
                bake_cookies(); \
            } \
            while (0) // end of MY_BAD_LONG_MACRO
    #endif
    
    1. ich würde statt IN_DOXYGEN was anderes verwenden. Vielleicht einfach nur DOXYGEN. Oder DOXYGEN_INVOKED analog zu RC_INVOKED.

Log in to reply