Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,可以从一套归档源文件开始,生成文档

下载Doxygen + Graphviz

Doxygen可以生成动态文档

Graphviz可以生成视图连接将.c文件中所用到的函数、头文件生成一个树状结构并且设置之后可以生成相对应的函数的跳转,方便查询函数。

一、Doxygen的使用步骤

1.1Doxygen配置方法

1.1.1>Doxygen的主页面

首先修改Project name,选择扫描源代码的目录,Source code directory:勾选Scan recursively:

1.2>在Wizard的Topics下的Mode,选择All Entities,可以输出相对完整的功能,是否包含源代码看自身情况,在下面选择好自己的语言。这里得是C所以选择C or PHP

1.3>在Output中,如果你需要输出chm格式,勾选chm,没有要求的话html就可以了

1.4>在Diagrams中选择使用GraphViz包,来输出UML,GraphViz包可以帮助建立一些树状视图。

1.5>Expert中,你需要首选确定你所输出的语言,个人使用中文在Expert的Input中,很重要的是INPUT_ENCODING项,如果使用的为微软默认字符集请填写GBK,不然目录乱码,当前选择UTF-8,输出语言选择的是Chinese.

1.6>Build页面,这个页面是生成帮助信息中比较关键的配置页面:

EXTRACT_ALL 表示:输出所有的函数,但是private和static函数不属于其管制。

EXTRACT_PRIVATE 表示:输出private函数。

EXTRACT_STATIC 表示:输出static函数。同时还有几个EXTRACT,相应查看文档即可。

HIDE_UNDOC_MEMBERS 表示:那些没有使用doxygen格式描述的文档(函数或类等)就不显示了。当然,如果EXTRACT_ALL被启用,那么这个标志其实是被忽略的。

INTERNAL_DOCS 主要指:是否输出注解中的@internal部分。如果没有被启动,那么注解中所有的@internal部分都将在目标帮助中不可见。

CASE_SENSE_NAMES 表示:是否关注大小写名称,注意,如果开启了,那么所有的名称都将被小写。对于C/C++这种字母相关的语言来说,建议永远不要开启。

HIDE_SCOPE_NAMES 表示:域隐藏,建议永远不要开启。

SHOW_INCLUDE_FILES 表示:是否显示包含文件,如果开启,帮助中会专门生成一个页面,里面包含所有包含文件的列表。

INLINE_INFO :如果开启,那么在帮助文档中,inline函数前面会有一个inline修饰词来标明。

SORT_MEMBER_DOCS :如果开启,那么在帮助文档列表显示的时候,函数名称会排序,否则按照解释的顺序显示。

GENERATE_TODOLIST :是否生成TODOLIST页面,如果开启,那么包含在@todo注解中的内容将会单独生成并显示在一个页面中,其他的GENERATE选项同。

SHOW_USED_FILES :是否在函数或类等的帮助中,最下面显示函数或类的来源文件。

SHOW_FILES :是否显示文件列表页面,如果开启,那么帮助中会存在一个一个文件列表索引页面。

1.7>Expert>Input页按照下图进行设置调整参数。

1.8>

1.如果在 Wizard 的 Output Topics 中选择了 prepare for compressed HTML (.chm)选项,此处就会要求选择 hhc.exe 程序的位置。在 windows help workshop 安装目录下可以找到 hhc.exe。

2.为了解决Doxygen生成的CHM文件的左边树目录的中文变成了乱码,CHM_INDEX_ENCODING中输入GB2312即可。

3.GENERATE_CHI 表示索引文件是否单独输出,建议关闭。否则每次生成两个文件,比较麻烦。

4.TOC_EXPAND 表示是否在索引中列举成员名称以及分组(譬如函数,枚举)名称。

1.8>运行doxygen

1.9>运行结束

二.注释规范

2.1> Doxygen注释种类

Doxygen注释的种类有多种

1.

/*** ....描述...*/

2.

/*!* ....描述...*/或者/*!....描述...*/

注:注释块中的星号(*)是可选的,可写可不写。

3

//////....描述...///或者//!//!....描述...//!

4

///....描述...//

2.2>Doxygen支持的指令

可以在注释中加一些Doxygen支持的指令,主要作用是控制输出文档的排版格式,使用这些指令时需要在前面加上“\”或者“@”(JavaDoc风格)符号,告诉Doxygen这些是一些特殊的指令,通过加入这些指令以及配备相应的文字,可以生成更加丰富的文档,下面对比较常用的指令做一下简单介绍。

@file

档案的批注说明。

@author

作者的信息

@brief

用于class或function的简易说明

eg:@brief本函数负责打印错误信息串

@param

主要用于函数说明中,后面接参数的名字,然后再接关于该参数的说明

@return

描述该函数的返回值情况

eg: @return 本函数返回执行结果,若成功则返回TRUE,否则返回FLASE

@retval

描述返回值类型

eg:@retval NULL 空字符串。
@retval !NULL 非空字符串。

@note

注解

@attention

注意

@warning

警告信息

@enum

引用了某个枚举,Doxygen会在该枚举处产生一个链接

eg:@enum CTest::MyEnum

@var

引用了某个变量,Doxygen会在该枚举处产生一个链接

eg:@var CTest::m_FileKey

@class

引用某个类,

格式:@class <name> [<header-file>] [<header-name>]

eg: @class CTest "inc/class.h"

@exception

可能产生的异常描述

eg:@exception 本函数执行可能会产生超出范围的异常

2.3>文件注释

放于文件的开头,例如:

/*** @file       filename* @brief      This is a brief description.* @details This is the detail description.* @author     author* @date       date* @version A001* @par Copyright (c):*      XXX公司* @par History:        *   version: author, date, desc\n*/

2.3>函数注释

放于函数声明前,例如:

/** 下面是一个含有两个参数的函数的注释说明(简述) * *     这里写该函数的详述信息 *     @param a 被测试的变量(param描述参数) *     @param s 指向描述测试信息的字符串 *     @return    测试结果 (return描述返回值) *     @see    Test()    (本函数参考其它的相关的函数,这里作一个链接) *     @note    (note描述需要注意的问题) */
int testMe(int a,const char *s);

2.4>数据结构注释

应放于函数声明前,例如:

/*** The brief description.* The detail description.*/typedef struct{int var1;///<Description of the member variable}XXXX;或者typedef struct box {成员变量注释(enum的各个值也如此注释):double length; ///< The length of the boxdouble width; ///< The width of the boxdouble height; ///< The height of the box};

2.5>宏定义注释

放于宏定义上方或者右侧,例如:

/** Description of the macro */#define XXXX_XXX_XX      ox7fffffff或者#define XXXX_XXX_XX      0 ///< Description of the macro.

2.6>全局和静态变量注释

例如:

1

2

3

/**  Description of global variable  */

int g_xxx = 0;

static int s_xxx = 0; ///<  Description of static variable

使用文档详见:  Doxygen使用

Doxygen的使用,配置及实例相关推荐

  1. PIX515防火墙配置策略实例

    需求:想通过pix做snat使内网用户上网,再做dnat使访问本公网IP的http服务.ssh服务转换为192.168.4.2的http服务.ssh服务,对192.168.4.2开放本pix的teln ...

  2. OpenCV输出版本和构建配置的实例(附完整代码)

    OpenCV输出版本和构建配置的实例 OpenCV输出版本和构建配置的实例 OpenCV输出版本和构建配置的实例 #include <opencv2/core/utility.hpp> # ...

  3. 山石网科SG-6000-E5560配置SSL ***实例

    山石网科SG-6000-E5560配置SSL ×××实例 网络拓扑 需求:使用用户名密码方式认证 第一步:创建本地用户 第二步:创建安全域 第三步:创建隧道接口 注意:隧道IP地址需和地址池同一网段. ...

  4. mysql 多实例 独立配置文件_三、安装配置多实例MYSQL5.6-多独立配置文件方法

    三.安装配置多实例MYSQL5.6-多独立配置文件方法 1.准备工作 检查操作系统版本.内核版本.selinux是否关闭.防火墙策略.IP地址.主机名配置.host表配置.yum配置 上传cmake. ...

  5. MySQL 5.7 多实例单配置 多实例多配置文件安装 | 资料

    01 MySQL 5.7 多实例单配置文件安装 1.创建mysql用户以及组 groupadd mysql useradd -r -g mysql -s /bin/false mysql 2.创建My ...

  6. ngnix配置及实例

    nginx配置及实例 1. nginx常用命令 2. nginx配置文件 3. localtion说明 4. nginx配置-反向代理实例1 5. nginx配置-反向代理实例2 5. nginx配置 ...

  7. Spring配置log4j实例

    转自:http://www.vijun.com/web/spring/2012/03/5f84f4d935e5b13f01362de76085013d.html Spring配置log4j实例首先需要 ...

  8. php小程序开发实例,微信小程序全局配置开发实例

    本文主要和大家分享微信小程序全局配置开发实例,主要以代码的形式和大家分享,希望能帮助到大家. 一.app.json 使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设 ...

  9. 15_串口中断通信寄存器即库函数配置编写实例

    串口中断通信寄存器即库函数配置编写实例 目录 串口中断通信寄存器即库函数配置编写实例 常用的串口相关寄存器: 波特率计算方法: USART_InitTypeDef结构体详解: 串口配置一般步骤: 调试 ...

  10. yum方式安装mysql多实例_centos7下yum安装mysql5.6.30及单机配置多实例

    1.在mysql官网上载tar包 MySQL-5.6.30-1.el6.i686.rpm-bundle.tar 进目录cd /home/fuyouling/ 解压tar -xvf MySQL-5.6. ...

最新文章

  1. Linux 服务器更换主板后,网卡识别失败的处理方法
  2. python编程快速入门例子-清华大学出版社-图书详情-《Python编程入门与案例详解》...
  3. python画饼图-python使用Matplotlib画饼图
  4. 获取url的hash值
  5. 第八篇——Struts2的处理结果类型
  6. Boost::context模块fiber的jump_void测试程序
  7. OpenCV在相机或图像中检测QR码的实例(附完整代码)
  8. 游戏中常用的寻路算法的分享(3):A*算法的实现
  9. java基础----IO字节流
  10. 什么是 ABAP Field Symbol
  11. axios请求超时,设置重新请求的完美解决方法
  12. JavaScript图片 向下闪缩放的效果
  13. 【算法】迪杰斯特拉算法 最短路径算法
  14. Python批量检查docx文档中文本框的内容是否正确
  15. 小学计算机课教后小记,小学信息技术课开展生活化教学的方法
  16. 计算机原理 · 全加器
  17. CDC Schemes
  18. 蒙特卡洛算法简单理解与demo
  19. 1个10年工程师的心路路程(二)
  20. POJ 1849 Two

热门文章

  1. 【转载】jQuery插件开发精品教程,让你的jQuery提升一个台阶
  2. 扩展gcd codevs 1200 同余方程
  3. BZOJ 1042 [HAOI2008]硬币购物
  4. MFC窗口位置和大小的获取
  5. JavaScript工具库之Lodash
  6. Linux性能测试 KSysguard工具
  7. Nordic系列芯片讲解九 (BLE事件回调机制解析)
  8. Linux系统调用-- mount/umount函数详解
  9. 阵元间隔为半波长的均匀分布16元线阵
  10. 一步一步学Silverlight 2系列(12):数据与通信之WebClient