Domanda

Al momento ho un paio di #define nel file C che spegnere alcune funzionalità hardware per il test. Tuttavia, voglio documentare loro con doxygen quando sono undefined pure.

Ad esempio:

Questo funziona bene:

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE

Quando si cambia la # define a #undef, si ottiene un avviso in doxygen, e non compare nell'output doxygen generato. Voglio documentare questo #define wether è definito o indefinito.

Come posso forzare doxygen per documentare un #undef ???

È stato utile?

Soluzione

definirli in un file di intestazione che è incluso solo da Doxygen (messo in un albero di directory separata dalla fonte principale).

Guardia questo file di intestazione avvolgendolo con una definizione che si definisce solo nel setup Doxygen, ad esempio:

#ifdef ONLY_FOR_DOXYGEN

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE

#endif

Ho usato questo per anche condizionalmente includono definizioni di classe leggera per le cose come le classi di base MFC in modo che appaiano come basi per la gerarchia di classe senza dover analizzare tutti MFC.

Altri suggerimenti

Ho trovato un modo kludgy aggiungendo il #undef sotto il #define. In questo modo è definito per Doxygen, ma subito undefined per il compilatore.

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
/// Comment out #undef to simulate HW interface
#define SIMULATE_SOME_HW_INTERFACE
#undef  SIMULATE_SOME_HW_INTERFACE

I stava cercando di capire come SIMULATE_HW_INTERFACE set nel file Doxyconfig utilizzando l'opzione predefinita. Non poteva farlo funzionare. Quindi, ecco la mia soluzione migliore finora.

Ho risolto il mio problema con documentare opzioni del compilatore come questo nel headerfile principale:

/**
 * \defgroup flags Compilerflags
 */

/**
 * \def MY_FLAG
 * \ingroup flags
 * Dokumentation....
 */
#ifndef MY_FLAG
#define MY_FLAG
#undef MY_FLAG
#else
#define MY_FLAG
#endif

In questo modo tutto funziona bene: Doxygen e la compilazione ed è possibile mantenere specificando le vostre bandiere a riga di comando ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top