2011-01-28 16 views
7

tengo el siguiente typedef:Documentar typedefs de devolución de llamada en Doxygen

typedef void(__cdecl *tCallback)(const char* Message); 

¿Cómo voy a documentar que correctamente usando Doxygen?

Me gustaría tener el tCallback documentado y los parámetros esperados documentados.

Un ejemplo simple:

/// \typedef test 
typedef test bool 

produce salida correcta en doxygen

//typedef tCallback 
typedef void(__cdecl *tCallback)(const char* Message); 

produce:

C:/test.cpp:2: warning: Found ';' while parsing initializer list! (doxygen could be confused by a macro call without semicolon) 
C:/test.cpp:1: warning: member with no name found. 

y

//typedef void(__cdecl *tCallback) 
typedef void(__cdecl *tCallback)(const char* Message); 

produce lo mismo que el anterior.

+1

posible duplicado de [Doxygen y typedefs] (http://stackoverflow.com/questions/1290406/doxygen-and-typedefs), lo que sugiere que es posible que necesite calificar correctamente su nombre typedef si está dentro de un espacio de nombres o anidado dentro de otro tipo –

+0

No es un duplicado ya que esa pregunta pregunta por typedefs simples no complejos como este. Las respuestas allí no ayudaron, primero busqué. –

+0

¿Alguien quiere decirme por qué los votos para cerrar? No hay duplicado aquí. El duplicado señalado anteriormente era simplemente para typedefs en un espacio de nombres, el espacio de nombres estaba causando el problema. Esta pregunta no está relacionada. –

Respuesta

4

Añadir lo siguiente a su Doxyfile:

PREDEFINED = __cdecl= 

Esto hará que Doxygen para ignorar este identificador para fines de documentación.

+0

mejor es que en algunos casos (en el mío) era usar 'PREDEFINED = __cdecl: =' para que __cdecl no se pudiera reasignar. –

+0

Una pequeña precisión: también debe activar la expansión macro (MACRO_EXPANSION = YES), o PREDEFINED no tendrá ningún efecto. –

+0

Sin embargo, sus documentos no mostrarán la firma de devolución de llamada correcta, ¿verdad?El __cdecl no se mostrará en los documentos, lo que podría causar problemas (error de compilación como mínimo) si el usuario copió la firma de los documentos en lugar del encabezado. Me parece que debería haber una manera de que los documentos muestren el typedef de manera idéntica a como está en el código. – dlchambers

Cuestiones relacionadas