Bonne façon de documenter #undef dans doxygen
Question
J'ai actuellement deux #define dans les fichiers c qui désactiver certaines fonctionnalités au matériel pour tester. Cependant, je veux les documenter avec doxygen quand ils ne sont pas définies aussi bien.
Par exemple:
Cela fonctionne bien:
/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE
Lorsque vous modifiez le #define à #undef, vous obtenez un avertissement doxygen, et il ne se présente pas dans la sortie générée doxygen. Je veux documenter ce #define il est wether définie ou non.
Comment puis-je forcer doxygen à documenter un #undef ???
La solution
les définir dans un fichier d'en-tête qui est inclus uniquement par Doxygen (mis dans un arbre de répertoire distinct de la source principale).
Garde ce fichier d'en-tête en l'enveloppant avec une définition que vous définissez uniquement dans la configuration Doxygen, par exemple:
#ifdef ONLY_FOR_DOXYGEN
/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE
#endif
J'ai utilisé cette option pour inclure également conditionnellement définitions de classe légère pour des choses comme les classes MFC de base de sorte qu'ils apparaissent comme bases pour la hiérarchie des classes sans avoir à analyser tous les MFC.
Autres conseils
J'ai trouvé un moyen kludgy en ajoutant le #undef sous le #define. De cette façon, il est défini pour Doxygen, mais immédiatement indéfini pour le compilateur.
/// \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
Je tente de comprendre comment configurer SIMULATE_HW_INTERFACE dans le fichier Doxyconfig en utilisant l'option PREDEFINED. Impossible de le faire au travail. Alors, voici ma meilleure solution à ce jour.
Je résolu mon problème avec la documentation compilerflags comme celui-ci dans la principale headerfile:
/**
* \defgroup flags Compilerflags
*/
/**
* \def MY_FLAG
* \ingroup flags
* Dokumentation....
*/
#ifndef MY_FLAG
#define MY_FLAG
#undef MY_FLAG
#else
#define MY_FLAG
#endif
Cette façon, tout fonctionne très bien: doxygen et la compilation et vous pouvez continuer à spécifier vos drapeaux ... commandline