C/C++ 代码注释规范及 doxygen 工具

参考

谷歌项目风格指南——注释

C++ doxygen 风格注释示例

ubuntu20 中 doxygen 文档生成

doxygen 官方文档 在 /Doxygen/Special Command/ 章节介绍 doxygen 的关键字

注释说明

注释的目的是提高代码的可读性与可维护性。

C 风格注释

// 单行注释

/*
多行注释
*/

C ++ 风格注释:

/// 单行注释
//! 单行注释

/**
多行注释
*/
/*!
多行注释
*/

  • 文件注释:时间 + 版权 + 维护作者 + 文件内容

  • 类注释:类的功能 + 用法 + 注意事项

  • 函数注释:

      函数声明通常位于头文件,头文件是客户使用函数服务的窗口。在函数声明处需要注释函数功能,解释接口,调用规则,潜在风险等,以避免函数使用不当;

      函数定义通常位于源文件,源文件是程序员维护,实现功能的平台。比喻作平台是因为服务端功能实现可以是由多个程序员共同维护的,注释要注重功能理解以降低代码维护成本。在函数定义处需要注释功能实现细节,编程技巧,算法原理,详细文档资料位置等。

      不要重复函数声明和定义的注释,没有意义!

  • 变量注释:

      成员变量和局部变量:除了简单的变量,都要说明变量的定义和用途。尤其是定义解释至关重要,避免变量被滥用导致歧义!有特定值的变量需要强调特定值。

      全局变量:每个全局变量都要说明定义和用途。

  • 实现注释:对巧妙, 晦涩, 重要的地方加以注释。解释代码段功能或为什么这么处理。

  • TODO注释:对临时方案,不好的代码注释方便日后改进。

  • 弃用注释:在弃用代码上方加// deprecate:弃用说明。弃用代码最好用 // 屏蔽,方便搜索栏发现代码已弃用。

Utuntu20 Vscode Doxygen 自动生成文档

vscode 安装 doxygen documentation generator 插件,在插件的商店页面,点击导航栏的 Config options 可以跳转到 json 配置说明位置。

安装好插件后,在文件头和函数头部打/**回车,就会生成注释。

在 vscode 按 ctrl+shift+p,搜索 “settings”,选择首选项配置(JSON)配置 doxygen 参数。

粘贴下面配置:

    // ---------- doxygen 注释配置 ---------- start line

    "doxdocgen.c.triggerSequence": "/**", // 触发 doxygen 注释
    "doxdocgen.c.commentPrefix": " * ", // 中间注释行的前缀
    "doxdocgen.c.firstLine": "/**", // 注释首行
    "doxdocgen.c.lastLine": " */", // 注释尾行

    "doxdocgen.generic.authorName": "jucat",
    "doxdocgen.generic.authorEmail": "lmr2887@163.com",
    "doxdocgen.generic.authorTag": "@author {author} ({email})",
    "doxdocgen.generic.dateFormat": "YYYY-MM-DD",
    "doxdocgen.generic.dateTemplate": "@date {date}",
    "doxdocgen.generic.generateSmartText": false,
    "doxdocgen.generic.boolReturnsTrueFalse": true,
    "doxdocgen.generic.briefTemplate": "@brief {text}",
    "doxdocgen.generic.includeTypeAtReturn": true,
    "doxdocgen.generic.linesToGet": 20,
    "doxdocgen.generic.customTags": [],
    "doxdocgen.generic.paramTemplate": "@param {param} ",
    "doxdocgen.generic.returnTemplate": "@return {type} ",
    "doxdocgen.generic.splitCasingSmartText": true,
    "doxdocgen.generic.filteredKeywords": [],
    "doxdocgen.generic.useGitUserName": false,
    "doxdocgen.generic.useGitUserEmail": false,
    "doxdocgen.generic.commandSuggestion": true,
    "doxdocgen.generic.commandSuggestionAddPrefix": false,

    // 文件头部注释
    "doxdocgen.file.copyrightTag": ["@copyright Copyright (c) {year} jucat"],
    "doxdocgen.file.versionTag": "@version 0.1",
    "doxdocgen.file.fileTemplate": "@file {name}",
    "doxdocgen.file.fileOrder": [
      "file",
      "author",
      "email",
      "brief",
      "version",
      "date",
      "empty",
      "copyright",
      "empty",
      "custom"
    ],

    // 自动生成的函数注释模板,不区分源文件和头文件
    "doxdocgen.generic.order": [
      "brief",
      "tparam",
      "param",
      "return"
    ],

    // 自定义注释模块
    "doxdocgen.file.customTag": [
      "@par 修改日志:",
      "<table>",
      "<tr><th>Date       <th>Version <th>Author  <th>Description",
      "<tr><td>{date} <td>1.0     <td>wangh     <td>内容",
      "</table>",
    ],

    // ---------- doxygen 注释配置 ---------- end line

文档生成

安装 doxygen-gui :

sudo apt install doxygen-gui

终端执行命令:

doxywizard

doxygen-gui 配置:

运行完成后,在 “文档输出位置” 目录下的 files.html 文件就是代码项目文档。

点击 -> 类列表 ,再点击查看类详细说明。

源文件注释:

头文件注释:

 文档效果:

更多 doxygen 关键字参考文章开头的“参考”,文档效果就自己测试看看了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git注释规范

主打一个有用 代码的提交规范参考如下&#xff1a; init:初始化项目feat:新功能&#xff08;feature&#xff09;fix:修补bugdocs:文档&#xff08;documentation&#xff09;style:格式&#xff08;不影响代码运行的变动&#xff09;refactor:重构&#xff08;即不是新增功能…

动手实操微软开源的GraphRAG

微软在今年4月份的时候提出了GraphRAG的概念&#xff0c;然后在上周开源了GraphRAG,Github链接见https://github.com/microsoft/graphrag,截止当前&#xff0c;已有6900Star。 安装教程 官方推荐使用Python3.10-3.12版本&#xff0c;我使用Python3.10版本安装时&#xff0c;在…

【C++】类和对象(中)--下篇

个人主页~ 类和对象上 类和对象中-上篇 类和对象 五、赋值运算符重载1、运算符重载2、赋值运算符重载3、前置和后置重载 六、const成员七、日期类的实现Date.hDate.cpptest.cpptest1测试结果test2测试结果test3测试结果test4测试结果test5测试结果test6测试结果test7测试结果 八…

如何在Excel中对一个或多个条件求和?

在Excel中&#xff0c;基于一个或多个条件的求和值是我们大多数人的常见任务&#xff0c;SUMIF函数可以帮助我们根据一个条件快速求和&#xff0c;而SUMIFS函数可以帮助我们对多个条件求和。 本文&#xff0c;我将描述如何在Excel中对一个或多个条件求和&#xff1f; 在Excel中…

R语言学习笔记2-RRStudio环境配置(Windows版)

R语言学习笔记2-R&RStudio环境配置&#xff08;Windows版&#xff09; 安装 R安装RStudio修改默认工作目录修改镜像验证镜像源修改文件编码 环境测试 安装 R R下载地址&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/base/ 点击下载链接并运行安装程…

《网络安全和信息化》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《网络安全和信息化》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《网络安全和信息化》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;工业和信息化部 主办单位&#…

PostgreSQL主从同步

目录 一、主从复制原理 二、配置主数据库 2.1 创建同步账号 2.2 配置同步账号访问控制 2.3 设置同步参数 3.4 重启主数据库 三、配置从数据库 3.1 停止从库 3.2 清空从库数据文件 3.3 拉取主库数据文件 3.4 配置从库同步参数 3.5 启动从库 四、测试主从 4.1在主库…

家用美容仪维修

美容仪行业是一个随着消费者对外貌和健康关注度不断提高而快速发展的行业。以下是对美容仪行业的详细分析&#xff1a; 一、行业概况 美容仪是一种根据人体生理机能进行调节改善身体和面部的机器&#xff0c;具有美白、嫩肤、祛斑、祛皱、脱毛、减肥等多种功能。随着科技的发…

Mac可以玩Steam吗?苹果电脑可以玩的单机游戏有哪些?

Mac可以玩Steam吗 关于Mac是否能够运行Steam这一问题&#xff0c;答案是肯定的。Steam平台已经支持Mac操作系统&#xff0c;玩家可以通过Steam在Mac上购买、下载和游玩各种优秀的游戏作品。不过&#xff0c;需要注意的是&#xff0c;并非所有的Steam游戏都有Mac版&#xff0c;…

JavaScript 中的面向对象编程--->构造函数--->原型对象与原型链,由浅入深详细讲解!

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家分享JavaScript 中的面向对象编程--->构造函数--->原型对象与原型链&#xff0c;由浅入深详细讲解&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&am…

去水印小程序源码修复版-前端后端内置接口+第三方接口

去水印小程序源码&#xff0c;前端后端&#xff0c;内置接口第三方接口&#xff0c; 修复数据库账号密码错误问题&#xff0c;内置接口支持替换第三方接口&#xff0c; 文件挺全的&#xff0c;可以添加流量主代码&#xff0c;搭建需要准备一台服务器&#xff0c;备案域名和http…

【Arduino】XIAOFEIYU(TM)实验ESP32使用DS18B20数字温度传感器模块(图文)

DS18B20 虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点。今天XIAOFEIYU(TM)就来实验一下使用ESP32连接DS18B20数字温度传感器模块。 DS18B20数字温度传感器模块一共有3个针脚&#xff0c;正负极加一个out数据接口。 连接传感器和ESP32组成测试电路&#xff1a…

R包:蛋白质组学质控评估PTXQC包

介绍 PTXQC包是2016年发表在J Proteome Res期刊上的R包&#xff0c;它主要是对MaxQuant输出结果进行提取处理从而获得评估蛋白质质量结果。 安装 从github安装&#xff0c;安装过程会自动构建tutorial。 devtools::install_github("cbielow/PTXQC", build_vignet…

Qt篇——QLabel固定尺寸的情况下让字体大小自适应并自动换行以完整显示

当文字较少时&#xff0c;默认字体大小为16&#xff1b;当文字内容较多时&#xff0c;自动换行并缩小字体。 举例&#xff1a; 字体较少时 字体较多时 思路&#xff1a; 设置自动换行属性 setWordWrap&#xff1b;通过QFontMetrics计算文字字体要多大、显示多少行才不会超过…

利用亚马逊云科技云原生Serverless代码托管服务开发OpenAI ChatGPT-4o应用

今天小李哥继续介绍国际上主流云计算平台亚马逊云科技AWS上的热门生成式AI应用开发架构。上次小李哥分享​了利用谷歌云serverless代码托管服务Cloud Functions构建Gemini Pro API​&#xff0c;这次我将介绍如何利用亚马逊的云原生服务Lambda调用OpenAI的最新模型ChatGPT 4o。…

MySQL之表的约束(上)

目录 空属性(NULL) 实例建表 插入操作 默认值(default) 建表 插入操作 NULL与default的结合 列描述 建表 zerofill 建表 插入操作 主键 建表 插入 主键的增加与去掉 去掉 增加 复合主键 插入的影响 真正约束字段的是数据类型&#xff0c;但是数据类型约束很单一&a…

burpsuite官方靶场之命令注入

1.简单的命令注入 1.1 达成目标 成功执行whoami查看当前用户的名字。 1.2 攻击步骤 观察该靶场的页面&#xff0c;发现这是一个展示其商品信息的页面&#xff0c;点击view details可以展示每个商品的详情。 来到一个商品的详情页&#xff0c;发现画框部分是检查商品库存的功…

合合信息大模型“加速器”重磅上线

大模型技术的发展和应用&#xff0c;预示着更加智能化、个性化未来的到来。如果将大模型比喻为正在疾驰的科技列车&#xff0c;语料便是珍贵的“燃料”。本次世界人工智能大会期间&#xff0c;合合信息为大模型打造的“加速器”解决方案备受关注。 在大模型训练的上游阶段&…

CSS 后代选择器正确写法 爸爸儿子之间有代沟

CSS 后代选择器正确写法 爸爸儿子之间有代沟 example&#xff1a; > <body> > <div class"outer"> > <span class"inner"></span> > </div> > </body> > <head> > <style>…

如何在浏览器控制台Console中引入外部 JS

想要在某个网页执行一些脚本&#xff0c;却发现某个工具类&#xff0c;如 ajax 请求的 axios 该网页没有引入&#xff0c;或者引入了但控制台却访问不到&#xff0c;这时要怎么办呢&#xff1f; 只需要控制台执行如下代码就好了 var script document.createElement(script);…