c++ doxygen 注释规范_利用Doxygen给C程序生成注释文档

利用Doxygen为C程序生成注释文档

一、Doxygen工具的安装

利用Doxygen工具生成API帮助文档需要下载安装以下三个软件:

(1)Doxygen:可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的

LATEX、RTF参考手册。本文中所使用的版本为:Doxygen-1.8.18.

(2)Htmlhelp:该软件可以帮助您建立 HTML 格式的 HELP 文件。用于创建.chm文件,可

以从微软官方网站下载。

(3)Graphviz:是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图

形,与Doxygen配合使用,用于提取函数之间,头文件之间的调用关系本文

中所使用的版本为:graphviz-2.38。

二、Doxygen工具的配置

1.打开Doxygen软件如下图所示:进行工程设置

0ee7598b2d78704ae7e25425e52482ca.png

2.模式设置如下图所示

f8177c73a6ef8e1c873c3f19e7eb41b3.png

3.设置输出格式如下图所示

c7a6b8b9c70228457c339dcc5b733310.png

4.设置函数调用配置如下图所示

049dbb77ac8dc9821d52b64fbf47ca0e.png

5.输出文档字符集配置

46c426df0538ea6462741ad7234e8c57.png

47b3102bff3b6935a2d78995094572bc.png

6.Build页面,这个页面比较关键:

ceb99c54fa8529d08e7585ffaff340b2.png

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

(2)EXTRACT_PRIVATE:输出private函数。

(3)EXTRACT_STATIC:输出static函数。

(4)SHOW_INCLUDE_FILES :是否显示包含文件,如果开启,帮助中会专门生成一个页面,

里面包含所有包含文件的列表。

(4)INLINE_INFO :如果开启,那么在帮助文档中,inline函数前面会有一个inline修饰词

来标明。

(5)SORT_MEMBER_DOCS :如果开启,那么在帮助文档列表显示的时候,函数名称会排

序,否则按照解释的顺序显示。

(6)GENERATE_TODOLIST :是否生成TODOLIST页面,如果开启,那么包含在@todo注解

中的内容将会单独生成并显示在一个页面中,其他的GENERATE选项同。

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

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

7.Input选项设置

对源文件的编码进行设置,设置的编码格式应与源文件的编码格式相同,如果源文件不是

UTF-8编码需要对源文件进行转换一下,否则生成的帮助文档会出现中文乱码现象。

5b86181114d1367ca5eafad3d9e77db7.png

8.Source Browser设置

b8fa2c3433fda4e5a348b01db0e32a31.png

9.chm配置

0c065ef58b1131a42531b2037b99f06b.png

10.配置Grapviz

f8aae19af58089aeef0a29eb7d456973.png

11.运行Doxygen

三、Doxygen注释格式

1.文件注释

文件注释是源代码文件进行注释,包含源文件和头文件,文件注释位于文件的开头。主要包含以下内容:文件名(@file )作者(@author)版本(@version)日期(@date)和简要说明(@brief),还可以包含:详细描述(@details)版权(@copyright)注意(@attention)等。

8bf0fcd7d133c7b570164c793d733fdb.png

ee89e398aad2660dde3a192ef7d73482.png

2.函数注释

函数注释是对本函数进行说明,位于函数定义上方。函数注释主要包含以下内容:简要说明(@brief)参数说明(@param)函数返回值情况(@return)函数返回值类型(@retval)

3.宏定义类型的注释

efd4ab46c9bc4419fc2a769484752bc0.png

d3b79c01a54872cdb86e0cedcdf36a27.png

4.结构体和枚举类型定义

结构体注释

84da1a5f45c88de050154102cb5f2ef5.png

c127fe8f6047ba7e48dfaa56d26fb111.png

4540f666c903204a43cd28c9d374f10a.png

cce098c2d9630369dfa4730f8e7e856a.png

枚举类型注释

86d8965bb372fd45842944b2775734f5.png

06d47ba6ed7bb26710af230a24306a2a.png

5.项目注释

主要对本项目进行简单描述,通常位于main.c主函数文件头部。注释为/**@mainpage  */。主要包含项目名称、功能描述、项目详细描述、用法描述和软件更新记录等。

95301df99e47d54952591e6eb6991aaf.png

968b90f8279b5de032e7cabbfadeaaae.png

四、Doxygen常用的注释命令

1.@author       作者信息

2.@brief        简要说明概要信息

3.@bug          被标记的代码会在Bug列表中出现

4.@class        对类进行标注

5.@data         日期

6.@file         文件名

7.@param        主要用于函数说明,对参数进行说明

8.@return       描述函数的返回值情况

9.@retval       描述函数返回值类型

10.@note        注解

11.@attention   注意

12.@name        分组名

13.@warning     警告信息

14.@enum        引入了某个枚举

15.@var         引入了某个变量

16.@exception   可能产生的异常描述

17.@todo        对将要做的事情进行注释

18.@see         一段包含其他部分引用的注释,中间包含对其他代码项的名称,自动产生对其的引用链接

19.@relates     通常用做把非成员函数的注释文档包含在类的说明文档中

20.@since       从哪个版本后开始有这个函数的

21.@code        在注释中开始说明一段代码,直到@endcode结束

22.@endcode     在注释中代码段的结束

23.@remarks     备注

24.@pre         说明代码项的前提条件

25.@post        说明代码项之后的使用条件

26.@deprecated  这个函数可能会在将来的版本中取消

27.@defgroup    模块名

   @{           模块开始

   @}           模块结束

28.@version     版本号

29.@par         开始一个段落

30.@detail      详细描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2021新版】一线大厂 Go 面试题合集

秋天到了,又到了工程师们躁动不安,蠢蠢欲动的季节~这不,金九银十已然到了家门口,现在后台就有不少人问我:现在外边大厂面试都问啥想去大厂又怕面试挂面试应该怎么准备Go 开发前景如何啥样的后端适合切 Go 技术栈...面试…

python开发【基础二】

基本数据类型: 1、数字 在Python2中,分为整形(int)和长整形(long)。 在Python3中,都是int。 #1、将字符串转换为数字 a "123" v int(a) print(v) print(type(v))#2、当前数字的二进制,至少用几位表示 1位等于8个字节.…

can总线资料

应知识星球的同学要求,整理了一些can总线资料。在公众号后台回复 【can总线】获取资料截图推荐阅读:专辑|Linux文章汇总专辑|程序人生专辑|C语言我的知识小密圈

Go语言基础之4--流程控制

一、if else语句 1.1 基本语法1 语法1: if condition { //do something } 语法2: if condition { //do something } else { //do something } 语法3: if condition { //do something } else if condition { //do something } else { //do som…

大家都挺难的​

这是昨天小号发的一个推文小时候觉得读书苦 但是现在想想,如果那时候跟现在一样用功 考上北大清华都没问题然后想到跟我家小云聊天的内容,挺有感触的。小云最近在我们小区的业委会上班,业委会在我家旁边,上班就是从这栋楼到另一栋…

android handler封装_Handler都没搞懂,你拿什么去跳槽啊?!

0. 前言做 Android 开发肯定离不开跟 Handler 打交道,它通常被我们用来做主线程与子线程之间的通信工具,而 Handler 作为 Android 中消息机制的重要一员也确实给我们的开发带来了极大的便利。Handler应用之广泛,可以说只要有异步线程与主线程…

做梦也想有一个这样的实验室

从现在开始,努力攒钱,等有钱了,自己也开一个这样的实验室。推荐阅读:专辑|Linux文章汇总专辑|程序人生专辑|C语言我的知识小密圈关注公众号,后台回复「1024」获取学习资料网盘链接。欢迎点赞,关注&#xff…

努力过头了,其实并不好

昨天下午下班的时候,有一个读者朋友找我聊天。我再说下聊天这个事情,如果大家有事情,可以在群里艾特我,因为重要的群我会置顶,置顶的群我会看消息,你在群里艾特我我一定能看到。当然,在群里发一…

jstack 脚本 自动日志_GitLab从安装到全自动化备份一条龙

原文地址[1]欢迎star需求1.在新服务器上安装并搭建好gitlab2.手动自动将旧服务器上的gitlab备份3.手动自动将gitlab备份包scp到新服务器上4.手动自动恢复新服务器上的gitlab备份包5.在新旧服务器上自动删除过期备份包前提1.版本•gitlab-ce是社区版•gitlab-ee是企业版1.方案•…

纪念音视频界前辈-雷霄骅

这是一篇记录文,纪念一位在音视频领域研究的博士雷霄骅。雷霄骅生前是中国传媒大学通信与信息系统博士在读生,于2016年7月17日凌晨猝死在学校主楼五层,10月就将迎来自己26岁的生日。雷霄骅在音视频领域有很深的造诣和贡献,指导了很…

gcc和g++有什么区别?

来源 | C语言中文网发展至今,GCC 编译器已经更新至 V10 版本,其功能也由最初仅能编译 C 语言,扩增至可以编译多种编程语言,其中就包括 C 。除此之外,当下的 GCC 编译器还支持编译 Go、Objective-C,Objectiv…

druid删除数据_Apache druid 删除数据流程 0.13

背景由于前端时间数据导入出现问题,导致druid 中的数据需要重新导入,但又要防止数据重复,需要把数据彻底清理。问题由于druid 属于时间序列数据库,删除的时候只能时间范围删除。删除流程根据时间范围查询segements 标识(在coordinator节点查询…

使用C语言扩展Python(四)

上一篇里的LAME项目已经展示了python如何与C语言交互,但程序仍不够理想,在python这一端仅仅是传递源文件和目标文件的路径,再调用C模块的encode方法来进行编码,但问题在于你无法控制encode函数,比如你想编码的源文件如…

案例 github_2019年12月Github上最热门的Java开源项目,速来围观!

转眼之间,已经进入了2020年,2019年发生的一切仿佛就在昨天。那么,刚过去不久的12月份GitHub上最热门的Java开源项目排行已经出炉啦。下面我带大家一起来看看上榜详情:1、Alinkhttps://github.com/alibaba/Alink Star 1695Alink 是…

实战CRC校验 | 固件如何校验自身完整性?

来源:公众号【鱼鹰谈单片机】作者:鱼鹰Osprey在一些比较严格的行业里面,不是说你的程序能完成必要功能就可以,还需要添加一些额外的功能,比如最常见的看门狗功能,它可以在程序死机时完成重启,但…

想一个颠覆性技术方向建议,你能想到什么?

如上图,是这次文章的主题。我对这个问题是有想法的,我现在是做音频研究,但是我觉得未来核心的方向一定是能源。试想一下,现在的手机功能越来越多,移动设备将会占领我们未来很长一段时间,那么手机的电池要如…

centos 安装idea 非可视化_太厉害了!目前 Redis 可视化工具最全的横向评测

转自:一入码坑深似海链接:www.jianshu.com/p/cb9f4dcb3b921. 命令行不知道大家在日常操作redis时用什么可视化工具呢?以前总觉得没有什么太好的可视化工具,于是问了一个业内朋友。对方回:你还用可视化工具?…

解决克隆clone github 仓库速度过慢的问题

解决克隆clone GitHub 仓库速度过慢的问题 由于大家都懂的原因,我们访问GitHub的速度确实有点慢,特别是克隆比较大的仓库的时候,那速度简直无法直视。 今天我就给大家带来一个邪门歪道,不通过FQ来解决速度问题。 先说结论吧&#…

聊聊身边的嵌入式,自拍神器自拍杆

曾几何时,自拍杆风靡世界,火当然是有原因的,这么一个小装备,极大的满足了人们爱拍照的需求,方便好用、经济实惠。恰巧我手上也有一个,收起来时很小、不占地方打开后可随意调节拍照同时它有个隐藏式三脚架功…

大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(十二)多语言支持...

虽然平时很少接触老外的项目、也很少碰到老外,但往往赚大钱的人是经常跟老外做买卖的人居多,他们大多需要网站是全英文的,我们往往上手有一个成熟的中文的网站或者软件,例如成熟的B2C网上购物系统,但是没办法也没精力再…