C/C++注释规范

c /c++注释规范 良好的注释习惯不仅可以提升代码阅读体验,也能减少不必要的误解,保证开发的效率以及工程的稳定 一般来说注释可以这样 // 单行注释 /* * 多行注释 */ /** * 多行注释 */ 第三种与第二种的区别在于它可以支持语法规则,在一些编译器上根据注释里的特殊字符串可以做到提示功能或者语法高亮,例如 Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。鉴于Doxygen良好的注释风格,故基 阅读详情
AI摘要

本文档介绍了Doxygen工具的使用,它是一个开源的跨平台文档系统,支持C、C++等多种语言。文章详细阐述了如何基于Doxygen制定注释规范,包括枚举、宏定义、文件头、命名空间、类和函数的注释方法,并给出了具体的代码示例。此外,还提及了变量注释和模块分组的注释规则。

转载自https://www.cnblogs.com/aspiration2016/p/8433122.html

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

1 标注总述

//-------------------------------------------------------------------
// 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__

2 文件头的标注

/*****************************************************************************
*  OpenST Basic tool library                                                 *
*  Copyright (C) 2014 Henry.Wen  renhuabest@163.com.                         *
*                                                                            *
*  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    renhuabest@163.com                                              *
*  @version  1.0.0.1(版本号)                                                 *
*  @date     renhuabest@163.com                                              *
*  @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                     *
*----------------------------------------------------------------------------*
*                                                                            *
*****************************************************************************/

3 命名空间

/**
 * @brief 命名空间的简单概述 \n(换行)
 * 命名空间的详细概述
 */
namespace OST
 {
 }

4 类、结构、枚举标注

/**
 * @brief 类的简单概述 \n(换行)
 * 类的详细概述
 */
class Example
 {
 };

枚举类型定义、结构体类型定义注释风格类似

/** 
 * @brief 简要说明文字 
 */
typedef struct 结构体名字
 {
      成员1, /*!< 简要说明文字 */ or ///<说明, /**<说明 */
      成员2, /*!< 简要说明文字 */ or ///<说明, /**<说明 */ 
      成员3, /*!< 简要说明文字 */ or ///<说明, /**<说明 */ 
 }结构体别名;

5 函数注释原则

/** 
 * @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);

6 变量注释

/// 简述
/** 详细描述. */

或者

//! 简述
//! 详细描述
//! 从这里开始
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的简述消失 7. 模块标注 模块定义格式:

/**
* @defgroup 模块名  页的标题名 (模块名只能英文,这个可以随便取.在一个源文件里不能相同)
* @{ (跟c语言{一样起作用域功能)
*/
… 定义的内容 …
/** @} */

例:

/**
* @defgroup HenryWen Example.cpp
* @{
*/
  … 定义的内容 …
/** @} */

\8. 分组标注 分组定义格式:

/**
* @name 分组说明文字
* @{
*/
… 定义的内容 …
/** @} */

例:

/**
* @name PI常量
* @{
*/
#define PI 3.1415926737
/** @} */

/**
* @name 数组固定长度常量
* @{
*/
const int g_ARRAY_MAX = 1024;
/** @} */
编程 | C/C++代码规范注释 注释风格 1. 总述 一般使用//或/**/,只要统一就好。 2. 说明 //或/**/都可以,但团队要在如何注释及注释风格上确保统一。 文件注释 1. 总述 在每一个文件开头加入版权、作者、时间等描述。 文件注释描述了该文件的内容,如果一个文件只声明,或实现,或测试了一个对象,并且这个对象已经在它的声明处进行了详细的注释,那么就没必要再加上文件注释,除此之外的其他文件都需要文件注释。 2. 说明 法律公告和作者信息: 每个文件都应该包含许可证引用。也要为项目选择合适的许可证版.. 阅读详情

相关推荐

C/C++ 程序员编程规范之注释(参考)

编程规范(注释) 注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释. 注释适当列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 源文件头部也应进行注释. 列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修...

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 5289

C++代码规范和Doxygen根据注释自动生成手册

《C++代码规范和Doxygen根据注释自动生成手册》讲师:夏曹俊课程收益学会C++代码规范,并理解为什么要有这些规范。学会C++代码注释规范,并能自动生成文档。适合人群C++初学者,掌握代码规范项目管理者制定代码的规范学习计划跟着视频学习,理解每个规则的意义课程目标理解每种规则的意义能够自己定义代码规则 常见问题课程使用的开发工具?课程使用的开发工具是vs2019课程是否提供文档和源码?课程提供源码和开发规则文档

c++的注释格式规范

1. ##fhd 版权所有 (C), 2010-$YEAR$, ****有限公司 文 件 名 : $FILE$ 版 本 号 : 初稿 作 者 : zhujun/016660 生成日期 : $YEAR$年$MONTH$月$DAY$日 最近修改 : 功能描述 : $end$ $selected$ 函数列表 : 修改历史 : 1.日 期 : $DATE$ $HOUR$:$MINUTE$:$SECOND$ 作 者 : zhujun/016660 修改内容 : 创建文件 *****************************************************************************/

C C++代码注释规范

1.标注总述 //------------------------------------------------------------------- // Platform Defines //------------------------------------------------------------------- enum { OST_PLATFORM_WIN32 = 1, OST_PLATFORM_LINUX_X86 = 2, OST_

Python_Alice的博客 1854

C++注释规范.pdf

规范的注释代码是一种很好的习惯,你需要帮助,而C++注释规范可以帮助你

python代码爬取大众点评评论!直接copy就可以运行!

python代码爬取大众点评评论!直接copy就可以运行!

QiuQiRuQin的博客 1万+

基于Doxygen文档的C++注释原则

下载国外的源代码,往往能看到附带的说明文档,文档都有详细的说明,大部分文档都可以通过doxygen这个跨平台软件生成,doxygen并不能随便读取你的C++的注释,必须按照一定的规则才能生成,所以在编写代码时,一定要按照标准写注释,否则会为以后带来许多麻烦下面介绍C++的标注写法,c++不推荐c语言式的/* */风格注释,这里,除了文件头使用这种注释外其余到使用C++风格的注释。标注总述 1.文件...

haoliliang88的博客 805

从空调温控到信号降噪:一阶RC低通滤波器在Arduino和STM32上的C语言实现指南

本文详细介绍了如何在Arduino和STM32平台上使用C语言实现一阶RC低通滤波器,涵盖从基础理论到实际应用的完整流程。通过具体代码示例和优化技巧,帮助开发者有效处理传感器噪声、信号平滑等问题,提升嵌入式系统的信号处理能力。

weixin_30565199的博客 501

C/C++规范注释教学

本文介绍了C/C++中使用Doxygen规范注释的方法,包括单行和多行注释的两种形式:普通注释(用于简单代码理解)和Doxygen风格注释(可被IDE识别生成文档)。重点讲解了Doxygen注释的多种格式及适用场景,强调规范注释能提升代码可读性和维护效率,特别适合团队协作和长期项目。文章通过示例展示了不同注释方式在IDE中的效果差异,并推荐了/** */作为多行注释的最佳实践,最终指出规范注释对代码可维护性的重要意义。

qq_63029701的博客 1016

峰岹FU6832L双核电机控制芯片实战:从FOC算法到BLDC/PMSM驱动开发

在嵌入式系统和电机控制领域,磁场定向控制(FOC)是实现无刷直流电机(BLDC)和永磁同步电机(PMSM)高效、平稳运行的核心算法。其原理是通过坐标变换将三相交流量分解为直流量,实现类似直流电机的转矩与磁场解耦控制,从而提升效率、降低噪音与振动。这项技术的工程价值在于能以更低的处理器开销实现高性能驱动,广泛应用于消费电子、工业自动化与智能家电。本文以峰岹FU6832L芯片为例,深入解析其独特的双核架构——将实时性要求极高的FOC运算交由专用硬件引擎处理,解放主控CPU处理应用逻辑,并结合PID参数整定、电流

weixin_29570795的博客 512

反无人机技术实战解析:从探测到拦截的全方位防御策略

本文深入解析了反无人机(C-UAS)技术的全链条防御策略。从雷达、无线电频谱、光电等多维度探测技术,到数据融合与威胁评估,再到无线电干扰、导航诱骗及物理拦截等核心拦截手段,系统阐述了如何构建从探测到拦截的实战化防御体系,为关键设施、大型活动等场景提供定制化空域安全解决方案。

weixin_29230649的博客 401

函数 注释规范_C/C++代码规范注释有哪些讲究?

如果领导给你一个项目的源码让你阅读,并理解重构代码,但里面一句注释都没有,我想这肯定是之前同事“删库跑路”了。看一份源码什么很重要?除了各种代码规范之外,还有一个比较重要的就是注释。注释虽然写起来很痛苦, 但对保证代码可读性至关重要,下面的将描述如何注释以及在哪儿注释。1注释风格1.总述一般使用//或/**/,只要统一就好。2.说明//或/**/都可以,但//更常用...

weixin_36337823的博客 2049

数据清洗(Data Cleansing)

数据清洗(Data Cleansing)是指对数据进行处理和纠错,以去除或修复数据集中存在的错误、不致、不完整和冗余的数据,从而使数据更加准确、可靠和有用。数据清洗是数据处理和数据分析中一个非常重要的步骤,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。数据清洗是一个重要的过程,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。在实际应用中,我们可以使用一些工具和技术来实现数据清洗,例如 Pandas、NumPy 和 OpenRefine 等。通过数据清洗,

meimei169500的博客 1万+

【C/C++ 基本知识 注释规范】C/C++中注释方式以及规范

注释是编译器忽略但对于程序员非常有用的文本。 注释通常用于批注代码以供将来参考。 在C/C++中,使用注释有三种方法。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 7013

Steam崩溃:ntdll.dll报错0xc0000374...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1156

智能车图像处理5-入门级分析4 ---环岛的状态机与补线

PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。

taiyuezyh的博客 8232

C/C++注释规范释放

在软件工程领域,有一个这样的说法,一个项目的注释要占到整个项目代码量的20%。主要因为代码主要是给人维护的,为了易维护,在函数功能、难以理解的程序段以及注意事项都有必要增加注释说明。下面就本人理解提供C/C++的主要的注释模板供参考。 文件注释 以下是文件顶部进行注释模板,主要内部包括版权说明、文件名、该文件中的主要功能、版本号、文件创建者、时间等内容。实际注释中不包括(1)(2)编号说明。 /*...

Keep Moving~ 2116

寻路最终版哦

相信大家用unity3d寻路的时候,一定会碰到多人

yxriyin的专栏 6954

【C&C++】C/C++代码如何写规范注释

基于doxygen要求的注释规则进行制定C/C++的注释规则. https://www.doxygen.nl/manual/docblocks.html 本文已Amazon AVS C++ SDK D-Bus client实现中的DBusConnection.h的注释为例子. 另外通过Doxygen这一工具记性API reference 文档的生成, 如何利用Doxygen自动生成API Reference说明文档 /* * Copyright Amazon.com, Inc. or its affili

love131452098的博客 223

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C/C++ 注释规范

看C/C++ 注释规范,了解代码规范基于Doxygen平台的注释规范看参考文章链接 基于Doxygen平台的注释规范 Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。鉴于Doxygen良好的注释风格,故基于Doxygen以形成自己的注释规范。 看参考文章链接 链接: link. ...

海明 269

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【规范】C/C++注释格式

1. 文件 /****************************************************************************************************************** * Copyright (C): 本代码所有版权为ysq所有,任何个人或者组织不得以任何方式复制、转载以挪作他用,否则将构成对ysq的产权知识侵权...

我的笔记本 4218

注释是写在接口上还是实现类上_C/C++代码规范注释有哪些讲究?

关注、星标公众号,不错过精彩内容编排 |strongerHuang微信公众号:strongerHuang如果领导给你一个项目的源码让你阅读,并理解重构代码,但里面一句注释都没有,我想这肯定是之前同事“删库跑路”了。看一份源码什么很重要?除了各种代码规范之外,还有一个比较重要的就是注释。注释虽然写起来很痛苦, 但对保证代码可读性至关重要,下面的将描述如何注释以及在哪儿注释。strongerHuan...

weixin_39545805的博客 1074

c++ doxygen 注释规范_[总结]doxygen的使用与C/C++注释规范

近期由于项目需要,参考网上资料整理了一下注释规范,详细内容如下:1.doxygen的安装与参数配置1.1.安装$ sudo apt-get install doxygen以下可以选择安装$sudo apt-get install doxygen-doc doxygen-gui graphviztexpower dot2tex graphviz-doc texpower-examples1...

weixin_30375113的博客 1240

C/C++代码注释规范与Doxygen文档生成实践

代码注释是软件开发中提升可维护性的关键技术手段,其核心价值在于实现知识传承与降低协作成本。通过结构化注释框架,开发者可以清晰记录函数功能、参数约束和实现原理,这在嵌入式开发领域尤为重要。以STM32硬件驱动开发为例,规范的注释能准确传递硬件特性补偿、时序要求等关键信息。采用Doxygen工具链可将注释自动转化为API文档,生成包含调用关系图、版本变更记录等要素的技术文档。实践中建议结合语义化版本控制,并在CI流程中集成注释检查,最终形成包含文件头模板、函数说明块、行内注解的三层注释体系。

weixin_42546508的博客 239
上一篇: C++书籍推荐
下一篇: vimtutor总结(待续)
威士忌燕麦拿铁
博客等级 码龄10年 5442粉丝 86原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值