2009-11-04 5 views
8

Tengo #define valores en los encabezados que ciertamente quiero que Doxygen documente pero tengo otros en C archivos que trato como constantes estáticas y no quiero que Doxygen los documente. Algo tan simple y estúpida como¿Cómo puedo evitar que doxygen documente #defines en un archivo C?

#define NUMBER_OF(a) (sizeof((a))/sizeof((a)[0])) 
#define MSTR(e) #e 

¿Cómo puedo mantener Doxygen de poner esos #define s en la documentación que crea? Intenté marcarlo con @internal pero eso no pareció ayudar.

Una cuestión relacionada con un tanto-en Doxygen y #define, ¿cómo puedo obtener:

#define SOME_CONSTANT 1234 /**< An explanation */ 

poner "SOME_CONSTANT" y "una explicación", pero no "1234" en la salida?

Respuesta

2

Puede excluir cualquier parte del código del análisis Doxygen con \cond...\endcond etiquetas.

de edición: Algunas preguntas relacionadas:

+1

Supongo que aborda el #define en el problema del archivo .c (puedo rodear esas líneas con control condicional). Aunque parece ruidoso y antinatural. Y no aborda en absoluto los valores de ocultación para # constantes definidas. (Tal vez no debería haber hecho una pregunta compuesta, pero esperaba que haya algunas cosas específicas de #definición que podrían abordar ambos problemas). –

+0

No sé cómo revelar una constante de definición sin revelar su valor. – mouviciel

+0

Tengo un trabajo de cond/endcond pero realmente me gustaría saber por qué el interno no funcionó. Mi doxygen fu es definitivamente débil. :-( –

0

Es, sin duda, aún parecen ruidoso y poco natural, pero para hacer frente a su otra pregunta, trate de:

/** An explanation */ 
#define SOME_CONSTANT /** @cond */ 1234 /** @endcond */ 
4

Puede establecer MAX_INITIALIZER_LINES = 0 en su archivo doxy para ocultar los valores de sus definiciones.

9

No es necesario utilizar los comandos \cond y \endcond. Puede ocultar el inicializador simplemente usando el comando \hideinitializer:

#define SOME_CONSTANT 1234 /**< An explanation @hideinitializer */ 

En cuanto a la primera pregunta, es posible establecer HIDE_UNDOC_MEMBERS = YES y sólo las macros que tiene un bloque de documentación Doxygen se mostrará en la salida.

1

Solo desea documentar lo que está declarado en los archivos .h. Supongo que declaras todas las funciones y variables estáticas como static en tus archivos .c. Todos los restantes están declarados en .h archivos correspondientes también. Estos son sus miembros "públicos".

Lo que me gusta hacer en este caso, y creo que Doxygen fue más diseñado para ser utilizado de esta manera es:

  • en su Doxyfile, establezca EXTRACT_ALL = NO y añadir el directorio donde sus .h archivos están a INPUT
  • agregue /** \file */ a todos sus archivos .h (pero no sus archivos .c).

Esto solo indexará lo que está contenido en sus archivos .h.Todavía se puede añadir el directorio que contiene sus archivos .c a INPUT a su Doxyfile, y serán analizados en busca de documentación adicional para sus miembros "públicos" ...

0

que resolvieron este problema moviendo mi documentación del archivo .c al archivo .h Luego ejecuta doxygen solo en el archivo .h.

Luego los elementos que quiero documentar (los elementos 'públicos') son intrínsecamente los que doxygen recoge.

Debido a que previamente he tenido cuidado de poner elementos 'públicos' en el archivo .h y 'privados' en el archivo .c esto funciona muy bien.

Me vino a la mente esta técnica cuando noté que doxygen estaba tirando de las inclusiones. Me sorprendió que si también fuera a mover el subconjunto de incluye que el módulo que llama tendría que usar mi módulo, entonces esa lista también estaría documentada.

Esta técnica tiene un beneficio adicional: puedo poner la documentación en una ventana de terminal y la fuente en una ventana de terminal diferente al actualizar la documentación.

Cuestiones relacionadas