Gau*_*ier 5 c doxygen header-files c-preprocessor
我想#define从h文件中包含s 来解析Doxygen的所有其他文件.
项目背景:
我的C项目包含一个头文件config.h,它是build命令.
它还MODEL_A在同一构建命令上定义目标.
config.h根据目标创建定义正在建立(未定义的同一列表MODEL_A作为MODEL_B):
#if defined(MODEL_A)
#define HAS_FUNCTIONALITY_1
#define HAS_FUNCTIONALITY_2
#elif defined(MODEL_B)
#define HAS_FUNCTIONALITY_3
#define HAS_FUNCTIONALITY_4
#endif
Run Code Online (Sandbox Code Playgroud)
我对Doxygen的问题:
我尝试使用Doxygen生成文档.我在Doxyfile中:
# including of config.h to INPUT seems necessary.
INPUT = ./source/config.h \
./source
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
INCLUDE_PATH = ./source
INCLUDE_FILE_PATTERNS = ./source/config.h
PREDEFINED = MODEL_A
Run Code Online (Sandbox Code Playgroud)
依赖于定义的代码HAS_FUNCTIONALITY_x未包含在文档中,就好像预处理器没有获得定义一样config.h.
到目前为止我的发现:
我在帮助下检查了预处理器输出doxygen -d Preprocessor,并且可以看到:
./source/config.h首先解析,并正确根据MODEL_A(我可以#defines在预处理器输出中看到正确).#define HAS_FUNCTIONALITY_1预处理器输出中的数字.HAS_FUNCTIONALITY_1act,就像它没有被定义一样.HAS_FUNCTIONALITY_1在PREDEFINEDDoxyfile 的字段中定义按预期工作.这不是一个实用的解决方案,但仍然很有趣.
当预处理器在所有后续C文件上工作时,如何确保#define首先预处理的行config.h保持定义?
展示 C 代码本身可能会对您有所帮助。一般来说,Doxygen 运行一个标准的预处理器 - 即渲染的代码应该与编译器预处理的代码相同。为了实现#define HAS_FUNCTIONALITY_1代码中的等效功能 - 必须对其进行定义。我从您不愿意将其添加到 doxygen 配置中了解到,它是在项目的其他地方(或者可能是 Makefile)定义的,这就是实际代码的行为就好像它被定义一样的原因。如果是这种情况,除了更多的预处理器技巧或简单地将其添加到 doxygen 配置文件中之外,我没有看到其他可行的解决方法。
| 归档时间: |
|
| 查看次数: |
1660 次 |
| 最近记录: |