[转载]Doxygen C++ 注释风格
转载自:http://luchenqun.com/?p=761
做一个C++方面的符合Doxygen的注释文档,备用。
1、头文件根原文件注释。这个我也不知道需要注释什么。能想到的是:谁写的,里面有些什么内容,文件是什么,版本号,日期等等。所以直接拷贝了网上的一个版本。大家根据情况直接增加或者减少吧。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/**
* Copyright (C), 2015.XXXX公司,All rights reserved.
* @file
* @brief
* @author
* @email
* @version
* @date 2015-XX-XX
* @update 2015-XX-XX
* @note
* @warning
* @todo
* @history:
*/
|
2、一般在一个模块里面要定义一个group,模板如下
1
2
3
4
5
6
7
|
/*
* @defgroup 模块名 模块的说明文字
* @{
*/
... 定义的内容 ...
/** @} */
// 模块结尾这样可以在其他地方以更加详细的说明添加members到一个group。
|
3、类名注释模板
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
/**
* @class <class‐name> [header‐file] [<header‐name]
* @brief brief description
* @author <list of authors>
* @note
* detailed description
*/
// 一个类里面的简单注释例子
class Test
{
public:
/** @brief A enum, with inline docs */
enum TEnum
{
TVal1, /**< enum value TVal1. */
TVal2, /**< enum value TVal2. */
TVal3 /**< enum value TVal3. */
}
*enumPtr, /**< enum pointer. */
enumVar; /**< enum variable. */
/** @brief A constructor. */
Test();
/** @brief A destructor. */
~Test();
/** @brief a normal member taking two arguments and returning an integer value. */
int testMe(int a,const char *s);
/** @brief A pure virtual member.
* @param[in] c1 the first argument.
* @param[in] c2 the second argument.
* @see testMe()
*/
virtual void testMeToo(char c1,char c2) = 0;
int publicVar;/**< a public variable. */
/** @brief a function variable, note Details. */
int (*handler)(int a,int b);
/** @brief brief before delaration */
int m_func(int a);
};
|
4、枚举注释示例
1
2
3
4
5
6
|
/** Another enum, with inline docs */
enum AnotherEnum
{
V1, /**< value 1 */
V2 /**< value 2 */
};
|
5、全局变量与宏
全局变量和全局宏必须要有注释,如果注释较短,则可以在所注释代码上方用
1
2
|
/** @brief some brief description */
int g_count;
|
或右方用
1
|
int g_count /**< some brief description */进行简要注释。
|
6、函数注释。这个是所有里面最重要的。模板示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/**
* @brief brief description
* @author <list of authors>
* @param[in|out] <parameter‐name> <parameter description>
* @return <description of the return value>
* @exception <exception‐object> <exception description>
* @note
* detailed description
* @remarks <remark text>
*/
// 一个示例
/**
* @breif 下面是一个含有两个参数的函数的注释说明(简述)
* @param[in] a 被测试的变量(param描述参数)
* @param[in] s 指向描述测试信息的字符串
* @return 测试结果 (return描述返回值)
* @see Test()(本函数参考其它的相关的函数,这里作一个链接)
* @note (note描述需要注意的问题)
*/
int testMe(int a,const char *s)
|
大概就这些吧。对于最后一个用的非常多的函数注释。再补充一下。如果使用Visual Studio,相信大家都装了一个Visual Assistant X的插件。它里面本身提供了一个函数模板,你只需要将那个函数模板改成适合Doxygen的格式即可。然后再函数名字上面点右键–>Refactor–>Document Method它自动会帮你生成一个按照你下的格式的文档。很方便的。
最后,将Doxygen一些常用指令附上。
@author | 作者 |
@brief | 摘要 |
@version | 版本号 |
@date | 日期 |
@file | 文件名,可以默认为空,DoxyGen会自己加 |
@class | 类名 |
@param | 函数参数 |
@return | 函数返回值描述 |
@exception | 函数抛异常描述 |
@warning | 函数使用中需要注意的地方 |
@remarks | 备注 |
@see | see also字段 |
@note | brief下空一行后的内容表示详细描述,但也可以不空行用note表示 |
@par | 开始一个段落,段落名称描述由你自己指定,比如可以写一段示例代码 |
@code | 引用代码段 |
@endcode | 引用代码段结束 |
@pre | 函数前置条件,比如对输入参数的要求 |
@post | 函数后置条件,比如对系统状态的影响或返回参数的结果预期 |
@defgroup | 模块名 |
@name | 分组名 |
@{ | 模块开始 |
@} | 模块结束 |
@deprecated | 今后可能将被废弃或已经有替代品的函数 |
@since | 从哪个版本后开始有这个函数的 |
@todo | 被标记的代码会在ToDo列表中出现 |
@bug | 被标记的代码会在Bug列表中出现 |
@test | 被标记的代码会在Test列表中出现 |
– | 一级项目符号 |
-# | 二级项目符号 |
尼玛我必须要吐槽一下,百度UEditor怎么老是对不齐啊!害我对格式对了好久好久!最后很无奈,只能用table来显示。但是table又无法调节每一列的宽度!我勒个去!
说一下如何在Visual Studio 中使用Visual Assist添加Doxygen格式的文档。
随便在一个函数上面右键–>Refactor–>Edit Refactoring Snippets。里面就有大量的注释模板。详见如下两个图片。
Visual Assist定义了许多宏,你按$就会有提示。详见这个链接。编辑好之后,你在函数上面右键,点上面的第一个图的Document Method,他就会帮你自动生成你想要的模板了。
参考资料:
[转载]Doxygen C++ 注释风格的更多相关文章
- vim插件的安装方式 -- vim注释插件和doxygen函数注释生成插件-ctrlp插件-tabular等号对齐 插件
使用unzip的时候 指定 -d选项, 是说明解压到的 目标地址. 这个参数还是比较方便的, 比直接unzip到当前目录, 然后在去拷贝到目标目录, 然后再删除当前目录中的解压文件夹, 方便多了. 使 ...
- IDEA修改XML注释风格
作为一个强迫症患者,每次想在xml文件用快捷键注释的时候,它自动生成的注释一直都是这样的:这令我非常难受,于是每次我都要把光标移到前面,然后再Tab以下,让它变成这样可是每次都这样,好麻烦啊,如果自己 ...
- [C] tcharall(让所有平台支持TCHAR)v1.1。源码托管到github、添加CMake编译配置文件、使用doxygen规范注释
作者:zyl910 v1.1版的改动如下—— 将源码上传到github. 调整目录结构. 添加CMake编译配置文件. 使用doxygen规范注释. 文件清单—— docs\ docs\images\ ...
- [C] c99int(让VC等编译器自动兼容C99的整数类型)V1.02。源码托管到github、添加CMake编译配置文件、使用doxygen规范注释
新版本—— http://www.cnblogs.com/zyl910/p/zlstdint_v100.html[C] zlstdint(让VC.TC等编译器自动兼容C99的整数类型)V1.0.支持T ...
- C语言程序注释风格
良好编程习惯的养成对于一个程序员的发展非常重要,而注释对于一份程序来讲又是一个必不可少的组成部分,今天来研究一下C语言程序的注释风格. 注释是源码程序中非常重要的一部分,一般情况下,源程序有效注释量必 ...
- 如何在Eclipse中如何自动添加注释和自定义注释风格
1. 如何自动添加注释 可通过如下三种方法自动添加注释: (1)输入“/**”并回车. (2)用快捷键 Alt+Shift+J(先选中某个方法.类名或变量名). (3)在右键菜单中选择“Source ...
- C语言注释风格
注释风格 一.前言 注释是源码程序中非常重要的一部分,一般情况下,源程序有效注释量必须在20%以上. 注释的原则是有助于对程序的阅读理解,所以注释语言必须准确.易懂.简洁,注释不宜太多也不能太少,注释 ...
- Vs code自动生成Doxygen格式注释
前言 程序中注释的规范和统一性的重要性不言而喻,本文就推荐一种在用vscode编写代码时自动化生成标准化注释格式的方法,关于Doxygen规范及其使用可查看博文 代码注释规范之Doxygen. ...
- 【转载】RESTful 架构风格概述
本文转载自https://blog.igevin.info/posts/restful-architecture-in-general/ 在移动互联网的大潮下,随着docker等技术的兴起,『微服务』 ...
随机推荐
- C#给指定doc文件写入宏
private void InsertMacro() { Word.Application oWord; Word.Document oDoc; VBIDE.VBComponent oModule; ...
- MFC学习之对话框---对话框之间的domodle 数据传递
if(IDOK==data.DoModal()){tx->m_gao=data.m_he;tx->m_kuan=data.m_wi;tx->m_jiao=data.m_jiaoju; ...
- Lance老师UI系列教程第九课->高仿比特币监控大师
http://blog.csdn.net/lancees/article/details/22898971
- SAP-ABAP系列 第二篇SAP ABAP开发基础
第二章SAP ABAP开发基础 1.ABAP数据类型及定义 ABAP程序中共包含8种基本数据类型定义, 类型名称 描述 属性 C Character Text (字符类型) 默认长度=1,默认值 = ...
- Java面向对象编程(一)
由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...
- 【BZOJ4668】冷战 并查集
[BZOJ4668]冷战 Description 1946 年 3 月 5 日,英国前首相温斯顿·丘吉尔在美国富尔顿发表“铁幕演说”,正式拉开了冷战序幕. 美国和苏联同为世界上的“超级大国”,为了争夺 ...
- EasyDarwin幼教云视频平台在幼教平台领域大放异彩!
在之前的一篇方案<基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案>中,我们提到一种可以广泛应用于幼教.工厂.建筑工地以及各种现场监控的云视频平台方案,这种 ...
- delphi2010\delphi XE7 开发及调试WebService 实例
使用delphi已经10多年了,一直搞桌面程序开发,对Webservice一直很陌生,近来因工作需要,学习delphi开发WebService,担心遗忘,作此笔记. 特别感谢 中塑在线技术总监 大犇 ...
- win7 64位系统与Ubuntu14.04 64位系统双系统安装【转】
本文转载自:http://blog.csdn.net/strugglepeach/article/details/51260886 Window 7 + Ubuntu 双系统安装 硬件: Thin ...
- Codeforces Round #295 (Div. 2)---B. Two Buttons( bfs步数搜索记忆 )
B. Two Buttons time limit per test : 2 seconds memory limit per test :256 megabytes input :standard ...