He estado intentando documentar mi proyecto C++ usando Doxygen, con poco éxito: Doxygen falla al reconocer ciertas macros, y consecuentemente, las funciones enteras son malinterpretadas y la mayoría de las veces no genera documentos aunque tengan bloques de comentarios especiales . El caso en cuestión:Usando Doxygen Correctamente
/**
* \def __MYLIB_FUNCTION_ATTRIBUTE(...)
* \brief Some brief comment
* \details Detailed doc
* \sa Some valid references
*/
#define __MYLIB_FUNCTION_ATTRIBUTE(...) __attribute__(__VA_ARGS__)
/**
* \def IN
* \brief Tag for input arguments to a function
* \details Blah...
* \sa OUT
*/
#define IN
/**
* \def OUT
* \brief Tag for output arguments to a function
* \details Blah...
* \sa IN
*/
#define OUT
class MyClass {
public:
/**
* \fn MyClass()
* \brief Constructor for MyClass
* \details Hi!
*/
__MYLIB_FUNCTION_ATTRIBUTE(__always_inline__)
MyClass() {
}
/**
* \fn const char *doNothing(const char *s IN)
* \brief A weird function
* \details Some very weird doc
* \param[in] s No good parameter
*/
const char* __SXC_FUNCTION_ATTRIBUTE(__const__) doNothing(const char *s IN) {
return s;
}
};
documentación generada por la clase anterior siempre le falta una descripción de doNothing
y IN
se interpreta como una función! ¿Estoy haciendo algo mal aquí?
¿Cuáles son los valores de MACRO_EXPANSION et al. (http://www.doxygen.nl/config.html#cfg_macro_expansion) en su archivo de configuración? –
@Eric: ¡Creo que comprendiste el problema de frente! MACRO_EXPANSION está establecido en SÍ, pero ¿debo especificar también directorios de inclusión adicionales? Actualmente, todos los encabezados utilizados también son procesados por Doxygen. Revisaré el resto de los parámetros y te responderé. – themoondothshine
Aquí son los params de configuración: 'ENABLE_PREPROCESSING = SÍ MACRO_EXPANSION = SÍ EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES' – themoondothshine