Bastian - 2014-06-18

actual i'm using doxygen 1.7.6.1 and i got no problems with remapping of defines for my function switches. Now i want to use version 1.8.7, but it seems to be that there will be only 1 run to evaluate the preprocessor defines. For sure ENABLE_PREPROCESSING = YES is set in my doxyfile. This causes in a missing function documentation in the generated output
I upgraded the doxyfile of version 1.7.6.1 with doxygen -u and then i run doxygen for the following example:

foo_bar1.c:

/**
* \file       foo_bar1.c
*
* \author     foo_bar
*
* \brief      foo bar
*
*
* \addtogroup FOO_BAR ... BAR
* \{                                                                                         
* \ingroup FOO
**/
#include "project.h"

#if (1U == USE_FOO_BAR_FUNCTION1)
/**************************************************************************//**
* \brief foo bar 
*
* does something special 
*
* \param[in]  foo
*             really special  
*             
* 
* \param[out] bar
*             more special  
*             
*******************************************************************************/
void foo_bar_function1(int foo, int bar)
{

} /* foo_bar_function1 */
#endif /* USE_FOO_BAR_FUNCTION1 */
/** \} **/ /* for doxygen */
/*-- EOF --*/

foo_bar1.h:

 /**
* \file       foo_bar1.h
*
* \author     foo_bar
*
* \brief      foo bar
*
* \addtogroup FOO_BAR special BAR
* \{                                                                                         
* \ingroup FOO
**/

#include "project.h"
#define USE_FOO_BAR_FUNCTION1          USE_FOO_FUNCTION1

/**************************************************************************
*   F U N C T I O N    D E C L A R A T I O N S
**************************************************************************/
#if (1U == USE_FOO_BAR_FUNCTION1)
void foo_bar_function1(int foo, int bar);
#endif /* USE_FOO_BAR_FUNCTION1 */

/** \} **/ /* for doxygen */
/*-- EOF --*/

project.h:

 /* FUNCTION SWITCHES */
#define USE_FOO_FUNCTION1 1U

#include foo_bar1.h

doxyfile:

INPUT                  = foo_bar1.h \
                         foo_bar1.c

INCLUDE_PATH           = .

So there is in the foo_bar1.h a remapping of USE_FOO_FUNCTION1 to USE_FOO_BAR_FUNCTION1 which is not identifyed by doxygen. So there is no function documentation in my generated refman.rtf and also in the html output.
If we replace the USE_FOO_FUNCTION1 in the project.h, the function documentation is shown.

new project.h:

/* FUNCTION SWITCHES */
#define USE_FOO_BAR_FUNCTION1 1U

#include foo_bar1.h

Now is everything working like before. This leads me to the conclusion, that the preprocessor will only be evaluated one time. Don't know if thats wanted, but in version 1.7.6.1 it works correctly. But thats no solution for my project.

Is there a way to do a workaround or something else that i can use the actual version like the way it was in version 1.7.6.1?

Thanks for your help.

Greetings

 

Last edit: Bastian 2014-06-18