Doxygen的工作环境准备好之后,如果想要使用Doxygen就必须在源码的注释中使用Doxygen要求的注释规则,不然Doxygen是不能识别的。

常用注释关键词

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@author     作者
@brief 摘要
@bug 被标记的代码会在Bug列表中出现
@class 类名,格式:@class <name> [<header-file>] [<header-name>] eg:@class Test"test/test.h"
@date 日期
@file 文件名,可以默认为空,DoxyGen会自己加
@param 函数参数名及其说明
@return 描述该函数的返回值情况eg: @return 本函数返回执行结果,若成功则返回TRUE,否则返回FLASE
@retval 描述返回值类型 eg: @retval NULL 空字符串。
@retval !NULL 非空字符串。
@note 注解
@attention 注意
@name 分组名
@warning 警告信息
@enum 引用了某个枚举,Doxygen会在该枚举处产生一个链接 eg:@enum CTest::MyEnum
@var 引用了某个变量,Doxygen会在该枚举处产生一个链接 eg:@var CTest::m_FileKey
@exception 可能产生的异常描述 eg: @exception 本函数执行可能会产生超出范围的异常
@todo 对将要做的事情进行注释
@see see also字段
@relates <name> 通常用做把非成员函数的注释文档包含在类的说明文档中。
@since 从哪个版本后开始有这个函数的
@code 在注释中开始说明一段代码,直到@endcode命令。
@endcode 在注释中代码段的结束。
@remarks 备注
@pre 用来说明代码项的前提条件。
@post 用来说明代码项之后的使用条件。
@deprecated 这个函数可能会在将来的版本中取消。
@defgroup 模块名
@{ 模块开始
@} 模块结束
@class 声明一个类
@version 版本号
@fn 声明一个函数
@par 开始一个段落,段落名称描述由你自己指定,比如可以写一段示例代码
- 一级项目符号
-# 二级项目符号

文件注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* @file demo.h
* @brief 功能简介
* @detail 详细描述
* @author Shona
* @version 0.1
* @date 2022-07-29
*
* @copyright Copyright (c) 2022
*
* @par History:
* <table>
* <tr><th>Date <th>Version <th>Author <th>Description
* <tr><td>2022-07-29 <td>0.1 <td>Shona <td>
* </table>
*/

函数注释

根据实际情况删减。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* @fn 函数名
* @brief NB模组向云平台上报数据
* @param[in] handle NB模组驱动句柄
* @param[in] *data 上报数据指针
* @param[in] len 上报数据长度
* @param[in] rcc_enabled 上报时是否主动释放RCC链接
* @param[in] update_enabled 上报时是否更新注册(只适用于onenet)
* @param[in] report_fail_try_type 上报失败重新注册类型 \n
* @ref NB_REPFAIL_REG_TRY 出错立即重试 \n
* @ref NB_REPFAIL_REG_DELAY_TRY 出错延缓重试,在延迟期间如果正常则重新延缓,适用于高频率上报(上报失败重新注册超时15min) \n
* @ref NB_REPFAIL_REG_NO_TRY 出错不重试
* @return 函数执行结果
* - NB_NOTIFY_SUCCESS 上报成功
* - NB_NOTIFY_FAIL 上报失败
* - NB_IOT_REGIST_FAILED 注册失败返回
* - Others 其他错误
* @par 示例:
* @code
* 移动平台发送数据 AT+MIPLNOTIFY=0,122553,3308,0,5900,4,4,50,0,0
* 电信平台发送数据 AT+M2MCLISEND=000101
* @endcode
* @see :: ME3616_FxnTable
*/

Example for cpp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/****************************************************************************
* Copyright (C) 2021 by Doxygen CPP Comment *
* *
* This file is part of Box. *
* *
* Code is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as published *
* by the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* Code is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with Code. If not, see <http://www.gnu.org/licenses/>. *
****************************************************************************/

/**
* @file doxygen_cpp.h
* @author someone
* @date 2021.08.01
* @brief doxygen规范的CPP文件注释规范文档,可以换行,
* 所有brief
*
* @details 对该文档的详细说明和解释,可以换行,
* 所有详细说明
*/

#ifndef a
#define a

/**
* @brief 这是MyClass类的说明
*
* @details 详细说明
*/
class MyClass
{
public:

/** 简要说明1 */
void fun1();

/**
* @brief 简要说明
* @details 详细说明
* 详细说明...
*
* @param arg1 参数1的说明...
* @param arg2 参数2的说明...
* @return 返回值的说明...
* @see function1 参考(链接function1)
* @note 注释...
* @attention 注意...
* @bug 存在的问题...
* @warning 警告...
*/
int function(int arg1, int arg2);

/**
* @brief 简要说明MyEnum...
*
* @details 详细说明MyEnum...
*/
enum MyEnum
{
int EVAL1, ///< 后置简要说明EVAL1...
int EVAL2 /**< 后置简要说明EVAL2... */
};
protected:
int value; ///< 后置简要说明value...
};

#endif // a