介绍
1.Doxygen并不处理所有的注释,doxygen重点关注与程序结构有关的注释,比如:文件、类、结构、函数、全局变量、宏等注释,而忽略函数内局部变量、代码等的注释。
2.注释应写在对应的函数或变量前面。JavaDoc风格下,自动会把第一个句号”.”前的文本作为简要注释,后面的为详细注释。你也可以用空行把简要注释和详细注释分开。注意要设置JAVADOC_AUTOBRIEF或者QT_AUTOBRIEF设为YES。
3.先从文件开始注释,然后是所在文件的全局函数、结构体、枚举变量、命名空间→命名空间中的类→成员函数和成员变量。
4.Doxygen无法为DLL中定义的类导出文档。
标准Doxyen注释块 Java/C/C++风格
/**
* Description
*/qt风格
/*!
* Description
*
*/纯C++风格
///
/// Description
///项目注释
@exception \<exception-object\> {exception description} 对一个异常对象进行注释。
@warning {warning message } 一些需要注意的事情
@todo { things to be done } 对将要做的事情进行注释,链接到所有TODO 汇总的TODO 列表
@bug 缺陷,链接到所有缺陷汇总的缺陷列表
@see {comment with reference to other items } 一段包含其他部分引用的注释,中间包含对其他代码项的名称,自动产生对其的引用链接。
@relates \<name\> 通常用做把非成员函数的注释文档包含在类的说明文档中。
@since {text} 通常用来说明从什么版本、时间写此部分代码。
@pre { description of the precondition } 用来说明代码项的前提条件。
@post { description of the postcondition } 用来说明代码项之后的使用条件。
@code 在注释中开始说明一段代码,直到@endcode命令。
@endcode 注释中代码段的结束。
@code .. @endcode 包含一段代码
@addtogroup 添加到一个组。
@brief 概要信息
@deprecated 已废弃函数
@details 详细描述
@note 开始一个段落,用来描述一些注意事项
@par 开始一个段落,段落名称描述由你自己指定
@param 标记一个参数的意义
@param[in out] in是不修改的引用传递 out 是可修改
@fn 函数说明
@ingroup 加入到一个组
@return 描述返回意义
@retval 描述返回值意义
@include 包含文件
@var、@enum、@struct、@class 对变量、美剧、结构体、类等进行标注@file
档案的批注说明。
@author
作者的信息
@brief
用于class 或function的批注中,后面为class 或function的简易说明。
@param
格式为
@param arg_name 参数说明
主要用于函式说明中,后面接参数的名字,然后再接关于该参数的说明。\
@return
后面接函数传回值的说明。用于function的批注中。说明该函数的传回值。
@retval
格式为
@retval value 传回值说明例子
/**@mainpage 春节12响固件程序
* <table>
* <tr><th>Project <td>dozen_bangs
* <tr><th>Author <td>李长条
* <tr><th>Source <td>D:\workspace\demo_project\examples\dozen_bangs\dozen_bangs-doxygen
* </table>
* @section 项目详细描述
* 不让地球继续流浪。
*
* @section 功能描述
* -# 破坏
*
* @section 用法描述
* -# 用顶针
*
* @section 固件更新
* <table>
* <tr><th>Date <th>H_Version <th>S_Version <th>Author <th>Description </tr>
* <tr><td>2018/08/17 <td>1.0 <td>S02010041808171 <td>wanghuan <td>创建初始版本 </tr>
* <tr><td>2019/06/24 <td>1.3 <td>S02010041906241 <td>wanghuan <td>
* -# 无
* </tr>
* </table>
**********************************************************************************
*/文件注释
/**@file main.c
* @brief 项目主函数文件
* @details 主要包含协议应用栈程序框架,main函数入口
* @author 李长条
* @date 2018-8-17
* @version V1.0
* @copyright Copyright (c) 2050
**********************************************************************************
* @attention
* SDK版本:v2050.0.0
* @par 修改日志:
* <table>
* <tr><th>Date <th>Version <th>Author <th>Description
* <tr><td>2010/02/17 <td>1.0 <td>wanghuan <td>创建初始版本
* </table>
*
**********************************************************************************
*/函数体注释
/**@brief 注册函数
* @param[in] *data 上报数据指针
* @param[in] len 上报数据长度
* @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
* int ret = register_all(&data, len, RT_TYPE_T1)
* @endcode
* @see :: xx表
*/模块注释1
/**@enum msg_types
* @brief 定义驱动上报应用消息类型
*/
/**@struct info
* @brief 信息结构体 \n
* 定义存储的信息
*/
typedef struct 结构体名字
{
成员1, ///< 简要说明文字 */ 如果不加<,则会认为是成员2的注释
成员2, ///< 简要说明文字
成员3, ///< 简要说明文字
}结构体别名;
模块注释2
/**@defgroup bsp_me3616 Bsp me3616 driver module.
* @{
* @ingroup bsp_drivers
* @brief 使用该驱动之前,先进行驱动句柄的实例注册. \n
* ME3616驱动支持云平台Onenet和OceanConnect \n
* 当使能GPS驱动使能时,支持GPS操作
*/
/** @} bsp_me3616*/
分组注释
/**@name 协议栈用全局参数
* @brief 协议栈参数配置(广播、连接、安全等)相关宏定义,协议栈各模块句柄等全局参数
* @{
*/
/** @} 协议栈用全局参数 */