Doxygen的无法正确解析宏

问题描述 投票:0回答:1

我使用的doxygen 1.8.11连同eclipse插件eclox。我想为我的源文件的调用图。当我在文件中的一个检查我注意到调用图包含一个函数调用它实际上是由#define我的期望是不希望看到在调用图调用这个函数禁用。

源文件的顶部:

#define MACRO_NAME   FALSE

....

void Func_1(int *p)
{
   ....
#if (MACRO_NAME == TRUE)
        Func_Call_2()
#else
        Func_Call_3()
#endif 
}

FALSE和TRUE在我包括在设置中的“包含路径”的头一个定义,我也得为FALSE和TRUE所以doxygen的是能够找到定义HTML报告的超链接。

既Func_Call_2和Func_Call_3()被描绘在调用图的时候,居然我只希望看到Func_Call_3()。

我在的Doxyfile设置为:

Enable Preprocessing      YES
Macro Expansion           NO
Expand Only Predefined    NO
Search Includes           YES
Extract All               YES
Extract Static            YES

我也试图与Macro Expansion是后来我在所有的只是设置回NO调用图后,在HTML文件中再次绘制了无调用图此功能Func_1

其中FALSE/TRUE被定义在头文件开始这样的:

#ifndef HEADER_H
#define HEADER_H

.....

#ifndef TRUE
   #define TRUE   1
#endif

#ifndef FALSE
   #define FALSE  0
#endif

还有没有其他的设置,我可以试试吗?使doxygen的将提请没有禁用代码调用图?

macros c-preprocessor doxygen call-graph
1个回答
0
投票

你可以尝试以下建议之一:

  • 不要使用TRUEFALSE1并直接0的定义,并在条件MACRO_NAME
  • 请不要为MACRO_NAME的值,而是检查它是否被定义或没有。
  • 设置宏Expandion到YES,展开唯一的预定义为YES。然后设置Predefined和/或Expand As Defined包括有关宏的。
© www.soinside.com 2019 - 2024. All rights reserved.