tipos que programa preprocesamiento preprocesador lenguaje informatica ifdef funcion estructura ejemplos directivas directiva define datos c++ c-preprocessor doxygen

c++ - programa - que es un preprocesador en informatica



Documentación del preprocesador definido en Doxygen (4)

¿Es posible documentar las definiciones del preprocesador en Doxygen? Esperaba poder hacerlo como una variable o función, sin embargo, la salida de Doxygen parece haber "perdido" la documentación para la definición, y tampoco contiene la definición en sí misma.

Probé lo siguiente

/**My Preprocessor Macro.*/ #define TEST_DEFINE(x) (x*x)

y

/**@def TEST_DEFINE My Preprocessor Macro. */ #define TEST_DEFINE(x) (x*x)

También intenté colocarlos dentro de un grupo (intentó defgroup, addtogroup y ingroup) en lugar de solo en el "ámbito de archivo", sin embargo, eso tampoco tuvo ningún efecto (aunque otros elementos del grupo se documentaron según lo previsto).

Revisé las distintas opciones de Doxygen, pero no pude ver nada que permitiera (o impidiera) la documentación de define.


Además de las respuestas anteriores, también es necesario tener ENABLE_PREPROCESSING=YES en el archivo Doxy.


En mis archivos "C", uso un formato de comentario y una línea #define como esta:

/** @brief Number of milli-seconds to wait*/ #define kTimeoutMSec (2)

Mis documentos html terminan conteniendo la documentación que especifico. (Tengo @archivo en la parte superior del archivo y EXTRACT_ALL = YES)


Intente configurar la opción EXTRACT_ALL, tengo ese conjunto en mi proyecto y genera la documentación para #defines. Puede haber una forma más elegante de hacerlo sin utilizar EXTRACT_ALL, así que asegúrese de consultar la documentación.

http://www.doxygen.nl/config.html#cfg_extract_all


Sí, es posible. La documentación de Doxygen dice:

Para documentar objetos globales (funciones, typedefs, enum, macros, etc.), debe documentar el archivo en el que están definidos. En otras palabras, al menos debe haber una

/*! /file */

o un

/** @file */

línea en este archivo.

Puede usar @defgroup , @addtogroup y @ingroup para colocar elementos relacionados en el mismo módulo, incluso si aparecen en archivos separados (consulte la documentación here para obtener más información). Aquí hay un ejemplo mínimo que me funciona (usando Doxygen 1.6.3):

Doxyfile :

# Empty file.

Prueba.h :

/** @file */ /**My Preprocessor Macro.*/ #define TEST_DEFINE(x) (x*x) /** * @defgroup TEST_GROUP Test Group * * @{ */ /** Test AAA documentation. */ #define TEST_AAA (1) /** Test BBB documentation. */ #define TEST_BBB (2) /** Test CCC documentation. */ #define TEST_CCC (3) /** @} */

Foo.h :

/** @file */ /** * @addtogroup TEST_GROUP * * @{ */ /** @brief My Class. */ class Foo { public: void method(); }; /** @} */

Bar.h :

/** @file */ /** * @ingroup TEST_GROUP * My Function. */ void Bar();

En este caso, la documentación de TEST_DEFINE aparece en la entrada Test.h debajo de la pestaña Archivos en la salida HTML, y las definiciones de TEST_AAA etc. aparecen en Grupo de prueba en la pestaña Módulos junto con la clase Foo y la Bar funciones.

Una cosa a tener en cuenta es que si coloca el nombre del archivo después del comando @file , por ejemplo:

/** @file Test.h */

entonces esto debe coincidir con el nombre real del archivo. Si no es así, no se generará la documentación de los elementos en el archivo.

Una solución alternativa, si no desea agregar comandos de @file , es establecer EXTRACT_ALL = YES en su Doxyfile.

¡Espero que esto ayude!