Doxygen 注释

发布时间:2026/10/15 20:03:05
Doxygen 注释 1. Doxygen 是什么Doxygen 是一个强大的、跨平台的文档生成工具。它能够从带有特殊格式注释的源代码中自动生成软件文档通常为 HTML、PDF、LaTeX、RTF 等格式。它的核心思想是“代码即文档”通过将文档与代码紧密关联极大提高了文档的准确性和可维护性。对于 C 这种复杂且充满各种语义类、模板、命名空间等的语言来说Doxygen 几乎是事实上的标准文档工具。2. 核心概念如何编写 Doxygen 注释Doxygen 注释的本质是带有特殊标记的、符合 Javadoc 风格的多行注释。2.1 注释风格Doxygen 支持多种注释风格最常见的有两种Javadoc 风格 (推荐) 使用/** ... *//** * 这是一个简短的描述。 * 这是一个更详细的多行描述 * 可以解释更多细节。 * * param x 参数的说明 * return 返回值的说明 */ void function(int x);Qt 风格 使用/*! ... */或//!/*! * 这是一个简短的描述。 * 这是一个更详细的多行描述。 * * \param x 参数的说明 * \return 返回值的说明 */ void function(int x); //! 这是一个非常简短的描述 //! //! 这是详细描述使用多个单行注释。 //! \param x 参数的说明 void anotherFunction(int x);最佳实践统一使用/** ... */风格因为它最通用也最容易被其他开发者识别。2.2 基本命令特殊标记命令以或\开头用于描述代码的特定部分。命令用途示例brief或\brief简要描述通常第一句就是可省略brief 计算两个数的和param或\param函数参数说明param a 第一个加数return或\return函数返回值说明return 两个参数的和details或\details详细描述如果简要描述后需要更多内容details 这个函数实现了...note或\note备注信息note 此函数非线程安全warning或\warning警告信息warning 参数不能为负数see或\see参考链接到其他函数/类see MyClass::anotherFunccode/endcode在文档中嵌入代码块见下文示例link/endlink创建自定义链接链接到特定锚点todo或\todo待办事项会汇总到单独的“Todo”列表todo 需要优化算法deprecated标记已弃用的函数/类deprecated 请使用 newFunc()3. 实战注释不同的 C 元素3.1 注释文件File Comment通常在.h或.cpp文件的开头添加。使用file命令。/** * file Calculator.h * brief 一个简单的计算器类头文件 * * 这个文件包含了 Calculator 类的声明该类提供了 * 基本的算术运算功能如加、减、乘、除。 * * author Your Name * date 2023-10-27 * version 1.0 */3.2 注释命名空间Namespace Comment/** * namespace MathUtils * brief 包含一系列数学工具函数和类 */ namespace MathUtils { // ... }3.3 注释类Class Comment/** * brief 一个简单的计算器类用于执行基本算术运算。 * * 这个类没有内部状态所有成员函数都是静态的。 * 它被设计为线程安全的。 * * see MathUtils */ class Calculator { public: /** * brief 计算两个整数的加法 * param a 第一个加数 * param b 第二个加数 * return a 和 b 的和 * note 注意整数溢出问题 */ static int add(int a, int b); /** * brief 计算两个整数的除法 * param dividend 被除数 * param divisor 除数 * return 除法运算的结果 (double) * warning 如果除数为0会抛出 std::invalid_argument 异常 * code{.cpp} * try { * double result Calculator::divide(10, 2); // result 5.0 * } catch (const std::exception e) { * // 处理异常 * } * endcode */ static double divide(int dividend, int divisor); /// brief 一个简短的注释使用三个斜杠也可以 static void shortComment(); };3.4 注释成员变量Member Variable Comment通常放在变量声明上方。class MyClass { private: int m_value; /// brief 内部存储的整数值行末注释使用 /// 或 /** /** * brief 代表用户状态的标志位 * - 0: 离线 * - 1: 在线 * - 2: 忙碌 */ int m_status; };3.5 注释枚举Enum Comment/** * brief 颜色枚举类 */ enum class Color { Red, /// 红色 Green, /// 绿色 Blue /// 蓝色 };4. 配置与生成Configuration Generation创建配置文件在项目根目录运行doxygen -g生成默认的配置文件Doxyfile。编辑Doxyfile用文本编辑器打开修改关键配置PROJECT_NAME My Awesome ProjectOUTPUT_DIRECTORY ./docs 输出目录INPUT ./src 源代码路径RECURSIVE YES 递归处理 INPUT 目录EXTRACT_ALL YES 为所有实体生成文档即使没有注释EXTRACT_PRIVATE YES 为私有成员也生成文档GENERATE_LATEX NO 如果你不需要 PDF/LaTeX 输出可以关闭HAVE_DOT YES,CALL_GRAPH YES,CALLER_GRAPH YES 生成函数调用关系图需要安装 Graphviz生成文档在终端运行doxygen Doxyfile。查看结果打开./docs/html/index.html即可浏览生成的 HTML 文档。5. 高级技巧与最佳实践使用 MarkdownDoxygen 支持 Markdown 语法可以让你的注释更丰富。/** * ## 这是一个二级标题 * 这是一个列表 * - 项1 * - 项2 * * **这是加粗文字** */分组Modules使用defgroup、addtogroup、ingroup将相关的函数/类分组让文档结构更清晰。/** defgroup MathCore 核心数学模块 * 提供最基础的数学运算功能。 */ /** * addtogroup MathCore * { */ int add(int, int); int subtract(int, int); /** } */ // 结束 MathCore 分组平衡细节与简洁公共API必须详细注释包括前置/后置条件、参数、返回值、异常、副作用。内部实现可以适当简洁但复杂的算法和逻辑仍需注释清楚。保持更新最糟糕的文档是过时的文档。将更新文档作为代码修改流程的必要一环。与 CI/CD 集成可以在 Jenkins、GitLab CI、GitHub Actions 等工具中集成 Doxygen 生成步骤实现文档的自动更新和部署。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询