文档说明
/**
* \file 文件名
* \author 作者
* \version 版本
* \date 日期
* \brief 这里是文件简介,简介以空行(前面可以有空格开头,然后跟有若干个星号,这些将被忽略)结束。
* - 功能1(-开头为无序号列表项)
* + 功能2(+开头为无序号列表项)
* -# 功能3(-#开头为自动序号列表项)
* 5. 功能4(数字.开头为有序号列表项,该数字并不代表实际显示序号)
*
* \details 这里是文件的详细描述。
*
\verbatim
这里也是文件的详细描述,为了避免文本中有某些字符串与Doxygen中命令或特殊字符冲突,
这里使用 \verbatim 命令对,以忽略其中的Doxygen命令。
\endverbatim
*
* \deprecated 这里是弃用描述,这会导致创建一个弃用列表,列出所有的弃用描述(可选)
* \warning 这里是警告信息(可选)
* \attention 这里是注意事项(可选)
* \copyright 这里是版权信息(可选)
* \remark 这里是备注信息(可选)
*/
函数说明
/**
* \brief 这里是函数简介
* \note 这里是注解,可以描述一些约束条件,或函数执行后的状态等
* - 状态1
* - 状态2
*
* \param[in] 参数名(或None) 参数说明: 参数方向可以是[in]、[out]或[in,out]
* \param[out] 参数名(或None) 参数说明:
* \arg 可能的参数值1: 参数值1说明
* \arg 可能的参数值2: 参数值2说明
* \retval 返回值说明(或None)
* - 可能的返回值1: 返回值1说明
* - 可能的返回值2: 返回值2说明
*/
枚举说明
/**
* @brief 这里是枚举描述
*/
typedef enum {
IDENTIFIER1 = 0x00, /*!< 标识符1描述 */
IDENTIFIER2 /*!< 标识符2描述 */
}eTypeName;
结构体说明
/**
* @brief 这里是结构体描述
*/
typedef struct {
Type_t member1; /*!< 这里是成员1描述。 参数的值可以是 \ref 分组 中的值,
可以将可取值的集合添加到一个分组,方便查看。 */
Type_t member2; /*!< 这里是成员2描述。 参数的值可以是 \ref 分组 中的值,
每个分组将会显示在单独的页面上,可用 \\ref 命令创建引用链接*/
}StructTypeName_t;
定义分组
/** \defgroup 分组名
* \brief 这里是分组简介
* \details 这里是详细描述
* @{
*/
/* 这里放置分组内容。
应该为整个项目定义一个分组;
应该为每个模块定义一个分组;
应该为每个文件定义一个分组;
应该为每组函数定义一个分组;
应该为每组可选值定义一个分组;
应该为相关联的一组集合定义一个分组;
*/
#define IDENTIFIER1 (value1)
#define IDENTIFIER2 (value2)
/**
* @}
*/
添加到分组
```c
/** @addtogroup 分组名
* @{
*/
/* 将内容添加到已有分组 */
/**
* @}
*/
宏说明
/*! \def MAX(x,y)
* 方式1:这里是 MAX(x,y) 宏的记录,这个注释块可以放在文档的其他位置
*/
/*! 方式2:这里是 MAX(x,y) 宏的记录,这个注释块必须放在宏的前面 */
#define MAX(x,y) ((x)>(y)?(x):(y)) /*!< 方式3:这里是 MAX(x,y) 宏的记录,这个注释块必须放在宏的后面 */