我正在使用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是在“包含路径”中的设置中包含的标头之一中定义的,而且我还在html报告中获得了FALSE和TRUE的超链接,因此doxygen能够找到该定义。
在调用图中绘制了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后,我才没有为此功能Func_1
获得任何调用图。在HTML文件中再次绘制了调用图>
其中定义了FALSE/TRUE
的头文件是这样的:
#ifndef HEADER_H
#define HEADER_H
.....
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
我可以尝试其他设置吗?这样doxygen将在没有禁用代码的情况下绘制调用图?
答案 0 :(得分:0)
您可以尝试以下建议之一:
TRUE
和FALSE
,而应使用1
和0
。MACRO_NAME
设置值,而是检查它是否已定义。