如何使用Doxygen 1.9.6文档化stdfix.h中的自定义类型并实现超链接
如何使用Doxygen 1.9.6文档化stdfix.h中的自定义类型并实现超链接
嘿,我刚好折腾过Doxygen 1.9.6处理stdfix.h里的这些定点类型,文档化加超链接完全可以实现,我给你拆解成实操步骤:
第一步:给自定义类型“注册”文档注释
因为unsigned short accum、long long sat fract这些是ISO/IEC TR18037的扩展类型,不是标准C的typedef,所以得先让Doxygen“认识”它们,同时补上属性说明。有两种方式可选:
方式1:直接修改stdfix.h(如果允许的话)
在头文件里合适的位置(比如类型逻辑定义的附近),加上Doxygen的@typedef注释,完整写出类型名:
/** * @typedef unsigned short accum * @brief 无符号短定点累加器类型 * @details 完全遵循ISO/IEC TR18037标准,包含15个整数位和1个分数位(数值根据实际标准调整) * 专门用于定点数的累加操作,兼顾内存占用和运算精度 */ /** * @typedef long long sat fract * @brief 饱和模式长整型分数类型 * @details 带饱和运算特性,溢出时会自动钳位到类型的最大/最小值,避免数值环绕错误 * 包含0个整数位和63个分数位,属于纯分数定点类型 */
方式2:单独创建文档文件(不修改原头文件)
如果不想动原始的stdfix.h,新建一个比如stdfix_dox.dox的文件,把上面的@typedef注释放进去,再加上文件说明:
/*! * @file stdfix_dox.dox * @brief 文档化stdfix.h中的ISO/IEC TR18037定点类型 */ /** * @typedef unsigned short accum * @brief 无符号短定点累加器类型 * @details 完全遵循ISO/IEC TR18037标准,包含15个整数位和1个分数位(数值根据实际标准调整) * 专门用于定点数的累加操作,兼顾内存占用和运算精度 */ /** * @typedef long long sat fract * @brief 饱和模式长整型分数类型 * @details 带饱和运算特性,溢出时会自动钳位到类型的最大/最小值,避免数值环绕错误 * 包含0个整数位和63个分数位,属于纯分数定点类型 */
之后在Doxyfile的INPUT配置项里,把这个文件加进去,让Doxygen处理它。
第二步:调整Doxygen配置确保识别类型
打开你的Doxyfile,修改几个关键配置项:
- 设
ENABLE_PREPROCESSING = YES:让Doxygen预处理头文件,正确识别这些非标准扩展类型 - 设
MACRO_EXPANSION = YES:如果stdfix.h里用宏定义了这些类型的别名,这个选项能让Doxygen展开宏,准确识别类型 - 设
EXPAND_ONLY_PREDEF = NO:确保所有相关宏都被展开,不会遗漏类型定义
第三步:实现自动超链接
做完上面的步骤,当你在代码注释或者文档里完整写出类型名(比如unsigned short accum)时,Doxygen会自动把它链接到你之前用@typedef文档化的条目上。如果需要手动指定链接(比如类型名被拆分或者想强调时),可以用@ref命令:
这个函数接收一个@ref unsigned short accum 类型的输入参数,返回@ref long long sat fract 类型的处理结果。
额外小技巧:给类型分组更清晰
你可以用@defgroup把所有stdfix的定点类型归到一个组里,让文档结构更有条理:
/** * @defgroup stdfix_types ISO/IEC TR18037定点类型集合 * @brief stdfix.h中定义的所有标准定点类型,包含累加器、分数等类型 */ /** * @typedef unsigned short accum * @ingroup stdfix_types * @brief 无符号短定点累加器类型 * ...(其他注释内容) */
这样生成的文档里,用户可以通过组快速找到所有相关的定点类型。
备注:内容来源于stack exchange,提问作者emacs drives me nuts
相关产品推荐
相关产品推荐

