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个字节.…

微软白皮书发布:在IIS7.5中用Service Bus端点寄宿WCF服务

公告:本博客为微软云计算中文博客的镜像博客。部分文章因为博客兼容性问题,会影响阅读体验。如遇此情况,请访问原博客。 针对如何在IIS中寄宿Service Bus的问题,微软官方提供了白皮书详细介绍了解决方案。有兴趣的读者可以从下面的…

oracle数据库时分秒格式_Oracle如何输出指定格式的日期时间数据呢?

摘要:下文讲述Oracle数据库输出指定的日期时间格式的方法分享,如下所示;实现思路:使用TO_CHAR系统函数,指定输出格式为*******,即可将日期时间转换为指定格式的字符串如:SELECT TO_CHAR(SYSDATE,YYYY/MM/DD) AS MONTH …

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…

正则表达式 学习笔记3.4

第一段为合法html代码&#xff0c;第二段为不合法html代码。<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />[^<]匹配非<的任意多个字符\\w[^<]</\\w>;开头用来匹配开始tag结尾用来匹配结束tag中间用来匹配文本。…

大家都挺难的​

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

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

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

ORA-12514: TNS:监听程序当前无法识别连接描述符中请(转)

http://blog.sina.com.cn/s/blog_628ed1290100gci9.html转载于:https://www.cnblogs.com/gaofei_work/archive/2010/05/19/1739174.html

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

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

matplotlib绘制矢量图像(svg),pdf and ps文件

机器学习的过程中处理数据&#xff0c;会遇到数据可视化的问题&#xff0e; 大部分都是利用python的matplotlib库进行数据的可视化处理&#xff0e; plt.show() 默认都是输出.png文件&#xff0c;图片只要稍微放大一点&#xff0c;就糊的不行&#xff0e; 下面给出一段正常进行…

vue获取div中的值_一篇文章看懂Vue.js的11种传值通信方式

面试的时候,也算是常考的一道题目了,而且,在日常的开发中,对于组件的封装,尤其是在 ui组件库中,会用到很多,下面,就来详细的了解下,通过这篇文章的学习,可以提升项目中组件封装的灵活性,可维护性,话不多说,先从大致的通信方式分类说起,然后依次非常详细地介绍,看…

努力过头了,其实并不好

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

Debug Assertion Failed! FIle:afxhtml.inl Line 57的错误的解决

作者&#xff1a;朱金灿 来源&#xff1a;http://blog.csdn.net/clever101/ 同事问我一个奇怪的问题&#xff1a;程序在他的机子上运行的好好的&#xff0c;但是其它人下载了源码之后可以编译通过&#xff0c;但是debug模式下调试运行到应用程序类中的InitInstance函数中的 i…

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

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

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

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

引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 解决

调用ActiveX控件时的异常&#xff0c;引起这个异常的可能性有很多&#xff0c;我的是如果在设计界面拖控件没问题&#xff0c;但是自己new出来就报错。 仔细想了一下&#xff0c;拖控件多了一个add进Form的 操作&#xff0c;把这个操作加上就OK了 AxControl control new AxCon…

[转]版本二写代码的小女孩

天冷极了&#xff0c;下着雪&#xff0c;又快黑了。这是一年的最后一天——大年夜。在这又冷又黑的晚上&#xff0c;一个乖巧的小女孩在机房里调试程序。她从家里出来的时候还穿着一件外套&#xff0c;但是有什么用呢&#xff1f;那是一双很大的外套——那么大&#xff0c;不知…

gcc和g++有什么区别?

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