参考
‒ 知乎-Doxygen快速入门
‒ Doxygen-官网文档
总结了最重要的几个命令,最终效果如下:
代码原型:
/**
* @brief 函数说明 标准注释示例
* @author 作者名
* @date 2022-6-8
* @param[in] in1 输入参数1说明
* @param[in] in2 输入参数2说明
* @param[out] out1 输出参数1说明
* @param[out] out2 输出参数2说明
* @return int 返回类型为整型
* @retval 1 成功 0 失败
*/
int stand_function(int in1,int in2,int out1,int out2){
return 0;
}
1. 分组功能
如上图所示cm_driver(通信驱动),encoder_driver,led_driver都属于HardWare Driver组
实现如下:
定义一个组 ‘hw’
/** @defgroup hw HardWare Driver
* @brief 硬件驱动
*/
再定义一个组'communication_Driver'然后用@ingroup继承'hw'组
/*! \addtogroup communication_Driver cm_driver
* @ingroup hw
* @brief 通信驱动
* Additional documention for group 'hw'
* @{
*/
2. 代码架构分层示意图
doxygen可以将系统中的各个模块的组织结构以下图的形式展示出来
通过鼠标点击对应的方框即可去到对应的模块说明界面
实现如下:
主要通过\extends命令实现,然后在doxygen的软件中也要开启相应的功能
/**
* @brief 驱动抽象类
*
*/
struct abstract_driver{
//....
}
/**
* @brief CAN驱动
* \extends abstract_driver
*/
struct CAN_driver{
struct abstract_driver drive;
};
/**
* @brief SCI驱动
* \extends abstract_driver
*/
struct SCI_driver{
struct abstract_driver drive;
};
3. 各种标签的使用
/*!
* @brief bug和warning测试
* @details This class is used to demonstrate a number of section commands.
* @author 史提芬-丁
* @author 史提芬-周
* @version 4.1a
* @date 1990-2011
* @pre First initialize the system.
* @bug Not all memory is freed when deleting an object of this class.
* @warning Improper use can crash your application
* @copyright GNU Public License.
* @note This is a tips.
*/
void bug_and_war();
4. 枚举
/**
* @brief Color enum
* \n
* 枚举测试
*/
typedef enum Color{
RED = 1, /*!< VAL = 1 */
BULE = 3 /*!< VAL = 3 */
}Color;
5. example
/**
* \example
* This is an example of how to use
* the test_example.
* \n\n
* 这个命令应该是针对整个文件的,如果
* 当前文件添加了此命令那么这个源文件
* 就会作为一个example.
*
*/
6. 针对此文件的说明
/**
* @file file_test.h
* @author 史提芬-丁 (you@domain.com)
* @brief file文件命令测试
* @version 0.1
* @date 2022-06-08
*
* @copyright Copyright (c) 2022
*
*/
7. markdown支持
/**
* \def MAX(x,y)
* level1 header:比较x,y中的较大值
* ========================
* level2 header:
* ------------------------
* # header 1
* ## header 2
* ### header 3
* #### header 4
* 添加宏定义说明命令
*/
#define MAX(x,y) ((x)>(y)?(x):(y))