2010-12-27 15 views
16

¿Cómo doy parte de una función de macro en C++ utilizando Doxygen y me refiero a ella en la documentación de mi código no Evil?Documentación de funciones de macros en C++ con Doxygen

Más específicamente, tengo una clase regular llamada "Mensaje" definida en Message.H de la que los usuarios pueden heredar para definir sus propios mensajes. En otro archivo ("MessageHelpers.H") tengo una macro loco como esto:

//! 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);      

en la documentación de mensaje, me gustaría que si la frase "REGISTER_MESSAGE_TYPE" podría convertirse automáticamente en un enlace y punto a mi documentación para la macro. P.ej.

//! 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(); 
}; 

¿Esto es posible?

Respuesta

12

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

Las listas section "Special Commands" la \def command y el section "Automatic link generation" describe lo que desea vincular a la macro.

Utilice \def para documentar una macro separada de la documentación. Use #MACRO(params) para vincular automáticamente a dicha definición de macro.

+0

Esto no funciona para mí .. Intenté copiar la macro ABS del ejemplo aquí http://www.stack.nl/~dimitri/doxygen/autolink.html pero no se generó ninguna documentación, y la referencia en mi código "#ABS (x)" no se vinculó. Debo estar haciendo algo mal en mi archivo de configuración? – rcv

+1

No sé si este es su problema, pero asegúrese de documentar el archivo en algún lugar donde se define la macro. Prueba cualquiera/*! \ file */or/** @file * /, y ver si doxygen ha generado alguna advertencia. Fuente es http://www.stack.nl/~dimitri/doxygen/docblocks.html buscando "objetos globales". (editar - los caracteres de barra oblicua no parecían funcionar, pero deberían ser marcadores de comentarios de varias líneas) – Guerrero

+0

Sí, tengo un/*! @file nombrearchivo.h descripción ... */en la parte superior de cada archivo ... Es interesante que mi definición de macro no aparece en mi documentación de MessageHelpers.H en absoluto. – rcv

Cuestiones relacionadas