2010-12-27 4 views
16

Comment documenter une fonction de macro en C++ à l'aide de Doxygen et y faire référence dans la documentation de mon code non-Mal?Documentation des fonctions de macro en C++ avec Doxygen

Plus spécifiquement, j'ai une classe régulière appelée "Message" définie dans Message.H dont les utilisateurs peuvent hériter pour définir leurs propres messages. Dans un autre fichier (« MessageHelpers.H ») J'ai une macro fou comme ceci:

//! Users must call this macro to register their messages... 
/*! 
    ...lest they be forced to type all sorts of boring and 
    error-prone boiler plate code. 
    blah blah blah... More specific documentation and explanation... 
*/ 
#define REGISTER_MESSAGE_TYPE(MSGTYPE) \ 
do_some(MSGTYPE);      \ 
seriously();       \ 
crazy_stuff(MSGTYPE);      

Dans la documentation de message, je l'aimerais si l'expression « REGISTER_MESSAGE_TYPE » pourrait devenir automatiquement un lien et le point à mon documentation pour la macro. Par exemple.

//! A cool message class 
/*! 
    Users can inherit from this class to create their own cool messages. 
    Just be sure to call REGISTER_MESSAGE_TYPE after your class definition! 
*/ 
class Message 
{ 
    virtual void doSomeStuff(); 
}; 

Est-ce possible?

Répondre

12

Voir http://www.stack.nl/~dimitri/doxygen/manual.html

Les listes section "Special Commands" la \def command et la section "Automatic link generation" décrit ce que vous voulez faire un lien vers la macro.

Utilisez \def pour documenter une macro distincte de la documentation. Utilisez #MACRO(params) pour établir une liaison automatique avec ladite définition de macro.

+0

Cela ne fonctionne pas pour moi .. J'ai essayé de copier la macro ABS de l'exemple ici http://www.stack.nl/~dimitri/doxygen/autolink.html mais aucune documentation n'a été générée, et la référence dans mon code "#ABS (x)" n'a pas été lié. Je dois faire quelque chose de mal dans mon fichier de configuration? – rcv

+1

Je ne sais pas si c'est votre problème, mais assurez-vous de documenter le fichier quelque part la macro est définie. Essayez soit/*! \ file */ou/** @file * /, et vérifie si doxygen a généré des avertissements. Source est http://www.stack.nl/~dimitri/doxygen/docblocks.html à la recherche de "objets globaux". (edit - les caractères slash star ne semblaient pas fonctionner, mais ils devraient être des marqueurs de commentaire multi-ligne) – Guerrero

+0

Yup, j'ai un/*! @file filename.h description ... */en haut de chaque fichier .. Il est intéressant que ma définition de macro n'apparaisse pas dans ma documentation de MessageHelpers.H. – rcv

Questions connexes