如何为带预处理器条件参数的函数编写唯一Doxygen注释头
解决方案
完全可以实现该需求,不需要额外编写包装函数,Doxygen原生支持条件注释功能,有两种常用实现方式:
方式1:使用Doxygen原生\cond条件块指令(推荐)
这种方式不会侵入C代码的编译逻辑,仅对Doxygen文档生成生效:
- 调整Doxygen工程配置文件(Doxyfile)的相关预处理器选项:
# 启用预处理器 ENABLE_PREPROCESSING = YES # 启用宏展开 MACRO_EXPANSION = YES # 扫描代码中的宏定义 SEARCH_INCLUDES = YES
如果你的B_ARG_ENABLED宏定义在其他头文件中,可以额外配置INCLUDE_PATH指定头文件所在目录,Doxygen会自动识别宏的定义状态。
2. 修改注释头写法如下:
/** * \fn add_stuff * \brief add stuff to stuff * \param a : bla bla * \cond B_ARG_ENABLED * \param b : blb blb * \endcond * \param c : blc blc * \return : some stuff */
Doxygen生成文档时,只有B_ARG_ENABLED宏被定义的场景下才会展示b参数的注释,未定义时自动隐藏该说明,和函数的编译逻辑完全匹配。
方式2:用C预处理器直接包裹注释段
如果你希望注释的可见性和代码编译逻辑完全绑定,可以拆分注释块用预处理器条件包裹:
/** * \fn add_stuff * \brief add stuff to stuff * \param a : bla bla */ #ifdef B_ARG_ENABLED /** * \param b : blb blb */ #endif /** * \param c : blc blc * \return : some stuff */
Doxygen会自动拼接相邻的同函数注释块,最终展示效果和写在同一个注释块中完全一致。
内容的提问来源于stack exchange,提问作者Guillaume D
相关产品推荐
相关产品推荐

