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 關鍵字參考文章開頭的“參考”,文檔效果就自己測試看看了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42585.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42585.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42585.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設置某些路由為公開訪問,不需要登錄狀態即可訪問

在單頁面應用&#xff08;SPA&#xff09;框架中&#xff0c;如Vue.js&#xff0c;路由守衛是一種非常有用的功能&#xff0c;它允許你控制訪問路由的權限。Vue.js 使用 Vue Router 作為其官方路由管理器。路由守衛主要分為全局守衛和組件內守衛。 以下是如何設置路由守衛以允…

k8s 部署RuoYi-Vue-Plus之mysql搭建

1.直接部署一個pod 需要掛載存儲款, 可參考 之前文章設置 https://blog.csdn.net/weimeibuqieryu/article/details/140183843 2.部署yaml 先創建命名空間ruoyi kubectl create namespace ruoyi創建部署文件 mysql-deploy.yaml --- apiVersion: v1 kind: PersistentVolume …

【論文閱讀筆記】Meta 3D AssetGen

【論文閱讀筆記】Meta 3D AssetGen: Text-to-Mesh Generation with High-Quality Geometry, Texture, and PBR Materials Info摘要引言創新點 相關工作T23D基于圖片的3d 重建使用 PBR 材料的 3D 建模。 方法文本到圖像:從文本中生成陰影和反照率圖像Image-to-3D:基于pbr的大型重…

搭建NEMU與QEMU的DiffTest環境(動態庫方式)

搭建NEMU與QEMU的DiffTest環境&#xff08;動態庫方式&#xff09; 1 DiffTest原理簡述2 編譯NEMU3 編譯qemu-dl-difftest3.1 修改NEMU/scripts/isa.mk3.2 修改NEMU/tools/qemu-dl-diff/src/diff-test.c3.3 修改NEMU/scripts/build.mk3.4 讓qemu-dl-difftest帶調試信息3.5 編譯…

C語言實現字符串排序

如果只有英文字符且不區分大小寫的話按照字典序排序可以用strcmp函數&#xff0c;兩個字符串自左向右逐個字符相比&#xff08;按ASCII值大小相比較&#xff09; strcmp(s1,s2) 當s1<s2時&#xff0c;返回為負數&#xff1b; 當s1s2時&#xff0c;返回值 0&#xff1b; …

安卓的組件

人不走空 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌賦&#xff1a;斯是陋室&#xff0c;惟吾德馨 目錄 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌…

【Linux】打包命令——tar

打包和壓縮 雖然打包和壓縮都涉及將多個文件組合成單個實體&#xff0c;但它們之間存在重要差異。 打包和壓縮的區別&#xff1a; 打包是將多個文件或目錄組合在一起&#xff0c;但不對其進行壓縮。這意味著打包后的文件大小可能與原始文件相同或更大。此外&#xff0c;打包…

Win10精英控制器2代青春版 設備刪除失敗,藍牙連接斷斷續續

前提 更新了主板rog z790帶WiFi、藍牙&#xff0c;但是精英控制器連上老師斷斷續續。 過程 在設備管理中嘗試了卸載、重裝主板對應的藍牙驅動&#xff0c;怎么都不行&#xff0c;都已經想放棄了。 但是想起來之前主板沒有藍牙&#xff0c;用的是綠聯的USB藍牙接收器&#xf…

Ubuntu24.04修改系統的環境變量

apache/tomcat配置要用到JDK&#xff0c;使用torch有時也會用到系統庫&#xff0c;涉及到環境變量 1. 查看環境變量 cat /etc/environment2. 新建環境變量 sudo nano /etc/environment在文件底部添加新的環境變量 MY_VARIABLE"your_value"3. 修改環境變量 臨時—…

數字化精益生產系統--APS 排程管理系統

APS&#xff08;Advanced Planning and Scheduling&#xff09;排程管理系統&#xff0c;即高級生產計劃與排程系統&#xff0c;是一種高度智能化的計劃和排程系統。它通過整合各種生產和供應鏈數據&#xff0c;運用先進的算法和數據模型&#xff0c;根據各種約束條件&#xff…

MySQL篇三:數據類型

文章目錄 前言1. 數值類型1.1 tinyint類型1.2 bit類型1.3 小數類型1.3.1 float1.3.2 decimal 2. 字符串類型2.1 char2.2 varchar2.3 char和varchar比較 3. 日期類型4. enum和set 前言 數據類型分類&#xff1a; 1. 數值類型 1.1 tinyint類型 在MySQL中&#xff0c;整型可以指…

排隊系統、Head and Tail of the Queue 題目

題目 JAVA40 排隊系統描述輸入描述&#xff1a;輸出描述&#xff1a; 分析&#xff1a;代碼&#xff1a; JAVA41 Head and Tail of the Queue&#xff08;隊列的頭和尾&#xff09;描述輸入描述&#xff1a;輸出描述&#xff1a; 示例:分析&#xff1a;代碼&#xff1a;大佬代碼…

【Java13】包

“包”這個機制&#xff0c;類似于分組。主要作用是區分不同組內的同名類。例如&#xff0c;高三三班有一個“王五”&#xff0c;高二八班也有一個“王五”。高三三班和高三八班就是兩個不同的包。 Java中的包&#xff08;package&#xff09;機制主要提供了類的多層命名空間&…

MISRA C2012學習筆記(6)-Rules 8.11

文章目錄 8.11 指針類型轉換(Pointer type conversions)Rule 11.1 不能在函數指針和任何其他類型指針之間進行轉換Rule 11.2 不得在指向不完整類型的指針和其他任何類型間進行轉換Rule 11.3 不得在指向不同對象類型的指針之間執行強制轉換Rule 11.4 不得在指向對象的指針和整數…

HTTP長連接

長連接優點 HTTP為什么要開啟長連接呢? 主要是為了節省建立的時間,請求可以復用同一條TCP鏈路,不用重復進行三握+四揮 如果沒有長連接,每次請求都做三握+四揮 如果有長鏈接,在一個 TCP 連接中可以持續發送多份數據而不會斷開連接,即請求可以復用TCP鏈路 長連接缺點 …

第六十八回 東平府誤陷九紋龍 宋公明義釋雙槍將-文心大模型ernie-speed免費使用方法

宋江和盧俊義抓鬮兒&#xff0c;宋江打東平府&#xff0c;盧俊義打東昌府&#xff0c;誰先打下誰做梁山泊主。宋江帶領林沖、花榮、劉唐等二十八人&#xff0c;盧俊義帶領吳用、公孫勝、關勝等二十八人。 宋江等人到了東平府外安山鎮&#xff0c;郁保四和王定六自告奮勇去下戰…

比Elasticsearch更高效的開源搜索引擎Meilisearch——筑夢之路

功能說明 快速與高效&#xff1a; Meilisearch 旨在提供快速的搜索速度。它可以在毫秒級別內返回查詢結果&#xff0c;即使在處理大型數據集時也是如此。 例如&#xff0c;在官方提供的基準測試中&#xff0c;使用 Meilisearch 處理 10 萬個文檔時&#xff0c;平均搜索時間為 …

vue3制作輪播圖+vue輪播圖的圖片引入方式

對應的<teemplate> <template><div class"box"><ul class"ul1" ref"ul1"><li v-for"(img, idx) in images" :key"idx" :style"{ zIndex: img.zIndex }"><img :src"img.s…

深度學習驅動的中文情感分析:PlugLink 在實踐中的橋梁作用

深度學習驅動的中文情感分析&#xff1a;PlugLink 在實踐中的橋梁作用 情感分析技術則如同濾網&#xff0c;幫助我們從這股洪流中篩選出有價值的情感信號。特別是對于中文這樣的多音字、同音詞豐富且語境復雜度高的語言&#xff0c;深度學習模型展現了無與倫比的優勢。本文將以…

代碼隨想錄第45天|動態規劃

300.最長遞增子序列 參考 dp[i] 表示以 i 為結尾的最長遞增子序列長度遞推公式: 使用 i 和 j 判斷 dp[i] max(dp[j] 1, dp[i])每次 j 都需要從頭遍歷 初始化: dp[i] 1 class Solution { public:int lengthOfLIS(vector<int>& nums) {vector<int> dp(nums…