Steffen Bauer - 2014-04-23

I have a problem with the following code:

void InterruptFunction( void );
void OtherFunction( void );

#define IO_INT_HANDLER( )   InterruptFunction( )

void main( void )
{
  IO_INT_HANDLER( );

  OtherFunction( );
}

void InterruptFunction( void )
{}

void OtherFunction( void )
{}

The preprocessor works correctly and generates the following output:

---------
00001 void InterruptFunction( void );
00002 void OtherFunction( void );
00003 
00004 #define IO_INT_HANDLER( )   
00005 
00006 void main( void )
00007 {
00008   InterruptFunction( );
00009   
00010   OtherFunction( );
00011 }
00012 
00013 void InterruptFunction( void )
00014 {
00015 }
00016 
00017 void OtherFunction( void )
00018 {
00019 }
00020 
00021 
---------

But the call graph shows only the relation between main() and OtherFunction(). The relation between main() and InterruptFunction() is missing.

I used doxygen 1.8.7 with the following settings:

EXTRACT_ALL            = YES

ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES

HAVE_DOT               = YES
CALL_GRAPH             = YES
CALLER_GRAPH           = YES

GENERATE_LATEX         = NO

How is it possible, to see all relations correctly?