macros - doxygen 无法正确解析宏
问题描述
我正在使用 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
我也尝试了YES 但只有在将其设置回 NO 后Macro Expansion
我才得到此函数的调用图,调用图在 html 文件中再次绘制Func_1
在其中FALSE/TRUE
定义的头文件开始如下:
#ifndef HEADER_H
#define HEADER_H
.....
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
我可以尝试其他设置吗?这样 doxygen 将在没有禁用代码的情况下绘制调用图?
解决方案
推荐阅读
- amazon-web-services - Amazon Gateway API Authenticate endpoints based on role from ID Token
- debugging - How to enable "step into" in debugger of intellij idea?
- sql - Compering number to a current month in MS Access
- django - Django REST Framework: I want to resolve n+1 in SerializerMethodField
- python - Reformatting DataFrame and Stripping DataFrame of 'Nan' in Python (pandas)
- linux - How to link mach-o format object files on linux?
- nginx - Nginx reverse proxy to CDN with automatically finds the right image size by configured array
- spring - Rollback is not working in @Transactional annotated service. Spring + Hibernate
- amazon-web-services - Clone Hard Drive and upload/use in Azure, AWS or Google Cloud
- javascript - How to mock ajax call in jamine?