Condicionales Doxygen con preprocesador que añade algunos argumentos a una función.
Supongamos el siguiente código:
#include <stdio.h>
#include <stddef.h>
#include <stdint.h>
/* en/deshabilitar el segundo argumento mediante comentarios/descomentarios */
#define B_ARGHABILITADO
/**
* \fn add_stuff
* \brief agregar cosas a cosas
* \param a : bla bla
#ifdef B_ARGHABILITADO (obviamente no funciona)
* \param b : blb blb
#endif //B_ARGHABILITADO
* \param c : blc blc
* \return : algunas cosas
*/
int add_stuff(int a,
#ifdef B_ARGHABILITADO
int b,
#endif //B_ARGHABILITADO
int c)
{
int total = 0;
total += a;
#ifdef B_ARGHABILITADO
total += b;
#endif //B_ARGHABILITADO
total += c;
return total;
}
int main(void)
{
printf("hello %d",add_stuff(
1,
#ifdef B_ARGHABILITADO
2,
#endif //B_ARGHABILITADO
3));
return 0;
}
Me gustaría tener una única cabecera Doxygen para una función, pero esta función tiene un argumento que está condicionado por una variable preprocesadora.
¿Hay alguna manera de mantener una única cabecera Doxygen?
es decir, no utilizar dos envoltorios add_stuff2 y add_stuff3</stdint.h></stddef.h></stdio.h>
davy.ai
Sí, hay una manera de mantener un encabezado único de Doxygen al condicionar un argumento con una variable preprocesadora. En la documentación de Doxygen, puede usar las directivas #ifdef y #else para documentar la función con y sin el argumento habilitado. Aquí hay un ejemplo:
Con esta configuración, puede generar documentación para ambas versiones de la función. Cuando B_ARG_ENABLED está definido, la documentación contendrá información sobre el parámetro opcional de la función. Cuando no está definido, la documentación solo mostrará los parámetros requeridos.
Este método le permite tener una única función con un encabezado único de Doxygen que funciona en ambos casos.