基于Doxygen的C/C++注释原则

基于Doxygen的C/C++注释原则
标注总述 1.文件头标注 2. 命名空间标注 3. 类、结构、枚举标注 4. 函数注释原则 5. 变量注释 6. 模块标注 7. 分组标注

总述
华丽的分隔线 //--------------------------------------------------------------------------- // Platform Defines //--------------------------------------------------------------------------- enum {
    OST_PLATFORM_WIN32         = 1,
    OST_PLATFORM_LINUX_X86     = 2,
    OST_PLATFORM_LINUX_ARM     = 3,
    OST_PLATFORM_ANDROID       = 4,
    OST_PLATFORM_MACOSX        = 5,
}; //--------------------------------------------------------------------------- // API Export/Import Macros //--------------------------------------------------------------------------- /** Indicates an exported and imported shared library function. */ #define OST_API_EXPORT        __declspec(dllexport) #define OST_API_IMPORT        __declspec(dllimport) //--------------------------------------------------------------------------- // Digital Image Macros //--------------------------------------------------------------------------- #define OST_PI                        3.141592653589793f #define OST_RGB2GRAY(r, g, b)        ( ((b) * 117 + (g) * 601 + (r) * 306) >> 10 ) //--------------------------------------------------------------------------- // date and time at compile time //--------------------------------------------------------------------------- #define OST_TIMESTAMP                __DATE__ " " __TIME__ 1. 文件头的标注 /*****************************************************************************
*  OpenST Basic tool library                                                 *
*  Copyright (C) 2014 Henry.Wen  [email protected]                         *
*                                                                            *
*  This file is part of OST.                                                 *
*                                                                            *
*  This program is free software; you can redistribute it and/or modify      *
*  it under the terms of the GNU General Public License version 3 as         *
*  published by the Free Software Foundation.                                *
*                                                                            *
*  You should have received a copy of the GNU General Public License         *
*  along with OST. If not, see <http://www.gnu.org/licenses/>.               *
*                                                                            *
*  Unless required by applicable law or agreed to in writing, software       *
*  distributed under the License is distributed on an "AS IS" BASIS,         *
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  *
*  See the License for the specific language governing permissions and       *
*  limitations under the License.                                            *
*                                                                            *
*  @file     Example.h                                                       *
*  @brief    对文件的简述                                                      *
*  Details.                                                                  *
*                                                                            *
*  @author   Henry.Wen                                                       *
*  @email    [email protected]                                              *
*  @version  1.0.0.1(版本号)                                                  *
*  @date     [email protected]                                              *
*  @license  GNU General Public License (GPL)                                *
*                                                                            *
*----------------------------------------------------------------------------*
*  Remark         : Description                                              *
*----------------------------------------------------------------------------*
*  Change History :                                                          *
*  <Date>     | <Version> | <Author>       | <Description>                   *
*----------------------------------------------------------------------------*
*  2014/01/24 | 1.0.0.1   | Henry.Wen      | Create file                     *
*----------------------------------------------------------------------------*
*                                                                            *
*****************************************************************************/ 2.命名空间 /**
    * @brief 命名空间的简单概述 \n(换行)
    * 命名空间的详细概述 */ namespace OST
    {
    } 3. 类、结构、枚举标注 /**
    * @brief 类的简单概述 \n(换行)
    * 类的详细概述 */ class Example
    {
    };

    枚举类型定义、结构体类型定义注释风格类似 /**
    * @brief 简要说明文字 */ typedef struct 结构体名字
    {
       成员1, /*!< 简要说明文字 */ or ///<说明, /**<说明 */ 如果不加<,则会认为是成员2的注释  成员2, /*!< 简要说明文字 */ or ///<说明, /**<说明 */  成员3, /*!< 简要说明文字 */ or ///<说明, /**<说明 */  }结构体别名; 4. 函数注释原则 /**
    * @brief 函数简要说明-测试函数
    * @param index    参数1
    * @param t            参数2 @see CTest
    *
    * @return 返回说明
    *        -<em>false</em> fail
    *        -<em>true</em> succeed */ bool Test(int index, const CTest& t);

    note:指定函数注意项事或重要的注解指令操作符
    note格式如下:
            @note 简要说明

    retval:指定函数返回值说明指令操作符。(注:更前面的return有点不同.这里是返回值说明)
    retval格式如下:
            @retval 返回值 简要说明

    pre:指定函数前置条件指令操作符
    pre格式如下:
            @pre 简要说明

    par:指定扩展性说明指令操作符讲。(它一般跟code、endcode一起使用 )
    par格式如下:
          @par 扩展名字

    code、endcode:指定
    code、endcode格式如下:
            @code
                简要说明(内容)
            @endcode

    see:指定参考信息。
    see格式如下:
            @see 简要参考内容

    deprecated:指定函数过时指令操作符。
    deprecated格式如下:
          @deprecated 简要说明 

    调试Bug说明
      解决的bug说明,@bug
    警告说明 (warning)
      定义一些关于这个函数必须知道的事情,@warning
    备注说明 (remarks)
      定义一些关于这个函数的备注信息,@remarks
    将要完成的工作 (todo)
      说明哪些事情将在不久以后完成,@todo
    使用例子说明 (example)
      例子说明,@example example.cpp

/** * @brief 打开文件 \n * 文件打开成功后,必须使用::CloseFile函数关闭 * @param[in] fileName 文件名 * @param[in] fileMode 文件模式,可以由以下几个模块组合而成: * -r读取 * -w 可写 * -a 添加 * -t 文本模式(不能与b联用) * -b 二进制模式(不能与t联用) * @return 返回文件编号 * --1表示打开文件失败(生成时:.-1) * @note文件打开成功后,必须使用::CloseFile函数关闭 * @par 示例: * @code * //用文本只读方式打开文件 * int ret = OpenFile("test.txt", "a"); * @endcode * @see 函数::ReadFile::CloseFile (“::”是指定有连接功能,可以看文档里的CloseFile变成绿,点击它可以跳转到CloseFile.) * @deprecated由于特殊的原因,这个函数可能会在将来的版本中取消 */ int OpenFile(const char* fileName, const char* fileMode); /** * @brief 关闭文件 * @param [in] file 文件 * * @retval 0 成功 * @retval -1 失败 * @pre file 必须使用OpenFile的返回值 */ int CloseFile(int file);

    -:生成一个黑心圆.
    -#:指定按顺序标记。
    :::指定连接函数功能。(注:空格和“:”有连接功能,但建议还是使用”::”。只对函数有用。)
    它们格式如下: (-和::例子前面有了,就介绍-#例子。)
            - 简要说明
            -# 简要说明
            ::函数名
    例: /** * @param [in] person 只能输入以下参数: * -# a:代表张三 // 生成 1. a:代表张三 * -# b:代表李四 // 生成 2. b:代表李四 * -# c:代表王二 // 生成 3. c:代表王二 */ void GetPerson(int p); 5. 变量注释 /// 简述 /** 详细描述. */ 或者 //! 简述 //! 详细描述 //! 从这里开始 int m_variable_1; ///< 成员变量m_variable_1说明  int m_variable_2; ///< 成员变量m_variable_1说明  /** * @brief 成员变量m_c简要说明 * * 成员变量m_variable_3的详细说明,这里可以对变量进行 * 详细的说明和描述,具体方法和函数的标注是一样的 */ bool m_variable_3;
    如果变量需要详细说明的可已按照m_varibale_3的写法写,注意,m_variable_2和m_variable_3之间一定需要空行,否则会导致m_variable_2的简述消失 6. 模块标注
        模块定义格式: /** * @defgroup 模块名 页的标题名 (模块名只能英文,这个可以随便取.在一个源文件里不能相同) * @{ (跟c语言{一样起作用域功能) */ … 定义的内容 … /** @} */ 例: /** * @defgroup HenryWen Example.cpp * @{ */ … 定义的内容 … /** @} */ 7. 分组标注
        分组定义格式: /** * @name 分组说明文字 * @{ */ … 定义的内容 … /** @} */ 例: /** * @name PI常量 * @{ */ #define PI 3.1415926737 /** @} */ /** * @name 数组固定长度常量 * @{ */ const int g_ARRAY_MAX = 1024; /** @} */
时间: 2024-08-19 10:15:57

基于Doxygen的C/C++注释原则的相关文章

GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便地使用所有版本的Android动作栏的设计模式. 对于Android 4.0及更高版本,ActionBarSherlock可以自动使用本地ActionBar实现,而对于之前没有ActionBar功能的版本,基于Ice Cream Sandwich的自定义动作栏实现将自动围绕布局.能够让开发者轻松开发

Objective-C规范注释心得——同时兼容appledoc(docset、html)与doxygen(html、pdf)的文档生成

作者:zyl910 手工写文档是一件苦差事,幸好现在有从源码中抽取注释生成文档的专用工具.对于Objective-C来说,目前最好用的工具是appledoc和doxygen.可是这两种工具对于注释的要求略有区别.于是我经过一番摸索,找到了一套能同时兼容这两种工具的注释写法. 工具简介--appledoc:简单方便,适于生成apple风格的html文档,及直接集成到xcode帮助(docset).官网 http://gentlebytes.com/appledoc/ .doxygen:功能强大,适

C/C++注释规范

C/C++注释规范 Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C.C++.Java.Objective-C和IDL语言,部分支持PHP.C#.鉴于Doxygen良好的注释风格,故基于Doxygen以形成自己的注释规范. 1.标注总述 //------------------------------------------------------------------- // Platform Defines //---------------------

使用 Doxygen 生成文档

背景 在查找 ffmpeg 文档的时候,发现其文档是根据 Doxygen 生成的. 为了学习方便,这里以 生成 ffmpeg 4.1 文档 为例. Doxygen简介 官方网站: http://www.doxygen.nl/index.html Doxygen是一个程序的文档产生工具,可以将程序中的注释转换成说明文档或者说是API参考手册,从而减少程序员整理文档的时间.当然这里程序中的注释需要遵循一定的规则书写,才能让Doxygen识别和转化. 目前Doxygen可处理的程序语言包含C/C++.

Linux doxygen的安装与使用

1.安装doxygen 目前最新版本的的doxygen是doxygen1.8.13,安装包可以在官网上下载,网址是:http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc. 从官网下载的时候,先下载的是doxygen-1.8.13.src.tar.gz这个安装包,发现只有这一个安装包用不了,没有可执行的configure文件和makefile文件,需要再下载另外一个安装包doxygen-1.8.13.linux.bin.tar.g

C++程序文档生成器——doxygen

本文就简单的介绍一下doxygen的文档注释方法,以供初学者参考: C++ 程序文档生成器--doxygen 1. 模块定义(单独显示一页) /* * @defgroup 模块名 模块的说明文字 * @{ */ ... 定义的内容 ... /** @} */ // 模块结尾 2. 分组定义(在一页内分组显示) /* * @name 分组说明文字 * @{ */ ... 定义的内容 ... /** @} */ 3. 变量.宏定义.类型定义简要说明 /** 简要说明文字 */ #define FLO

基于MVC4+EasyUI的Web开发框架经验总结(14)--自动生成图标样式文件和图标的选择操作

在很多Web系统中,一般都可能提供一些图标的选择,方便配置按钮,菜单等界面元素的图标,从而是Web系统界面看起来更加美观和协调.但是在系统中一般内置的图标样式相对比较有限,而且硬编码写到样式表里面,这样给我们扩展使用有很多的不方便.基于这个原因,我想如果能够独立一个模块,自动根据图标生成图标CSS样式文件,并存储相应的记录到数据库里面,方便我们查询显示,那样我们使用起来就很方便了,最后有了这些数据,只需要做一个通用的图标选择界面,并可以在很多地方重用了.本文正是基于这个思路,开发了一个图标管理模

基于MVC+EasyUI的Web开发框架经验总结(14)--自动生成图标样式文件和图标的选择操作

在很多Web系统中,一般都可能提供一些图标的选择,方便配置按钮,菜单等界面元素的图标,从而是Web系统界面看起来更加美观和协调.但是在系统中一般内置的图标样式相对比较有限,而且硬编码写到样式表里面,这样给我们扩展使用有很多的不方便.基于这个原因,我想如果能够独立一个模块,自动根据图标生成图标CSS样式文件,并存储相应的记录到数据库里面,方便我们查询显示,那样我们使用起来就很方便了,最后有了这些数据,只需要做一个通用的图标选择界面,并可以在很多地方重用了.本文正是基于这个思路,开发了一个图标管理模

红帽7搭建httpd的三种模式(基于主机,端口,IP)

httpd是Apache超文本传输协议(HTTP)服务器的主程序.被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池. yum install httpd -y                                             #安装httpd yum install policycoreutils-python -y                     #安装semanage echo "laotang" > /var/www/ht