当前位置: 首页 > news >正文

doxygen制作接口文档

系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、下载
  • 二、安装
    • 三、代码注释
    • 四、使用doxygen生成文档

前言

每次手动写接口文档太痛苦了,现在福利来了–doxygen
Doxygen是软件开发中广泛使用的文档生成器工具。它自动从源代码注释生成文档,解析有关类、函数和变量的信息,以生成HTML和PDF等格式的输出。通过简化和标准化文档过程,Doxygen增强了跨不同编程语言和项目规模的协作和维护。支持c++、Java、C#、PHP、Fortran
在这里插入图片描述

一、下载

Doxygen下载地址
在这里插入图片描述

二、安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、代码注释

在这里插入图片描述
接口代码头文件

#ifndef _CONGIG_DATA_H_
#define _CONGIG_DATA_H_#include "RegisterControl_Exports.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <map>
#include <vector>
#include "nlohmann/json.hpp"using namespace std;
using nlohmann::json;/// @brief: 这个类处理json格式数据
/// @author:xxxxxx
/// @version: v1.0
/// data:2024-8-8
namespace ConfigJsonData {class RegisterControl_API ConfigData{public:ConfigData();~ConfigData();	public:/// @brief 从文件中加载json数据/// @param fileName 文件名/// @return 无 注:内部输出加载json数据是否成功void loadJsonFile(const string& fileName);/// @brief 从字符串中加载json数据/// @param jsonString 输入json格式字符串/// @return 无 注:内部输出加载json数据是否成功void loadJsonString(const string& jsonString);/// @brief 内部构造json对象/// @param 无/// @return 返回json对象json toJson();/// @brief 序列化:把json数据转成ConfigData对象/// @param 无/// @return 无 注:如果转换失败,内部处理转换失败的异常void fromJson();/// @brief 把json数据保存到文件/// @param fileName 保存文件名/// @return 无 注:如果转换失败,函数内部处理转换失败的异常void saveToJsonFile(const string& fileName);/// @brief 把json数据保存到字符串/// @param 无/// @return 无 注:如果转换失败,函数内部处理转换失败的异常void saveToJsonString();public:// Getter 和 Setter 方法 /// @brief 获得json格式字符串/// @param 无/// @return 返回json格式字符串string getJsonString() { return _jsonString; }/// @brief 获得json对象/// @param 无/// @return 返回json格式字符串	const json& getJsonData() const { return _jsonData; }/// @brief 获得json对象/// @param jsonData json对象/// @return 无 设置json对象	void setJsonData(const json& jsonData) { _jsonData = jsonData; }/// @brief 获得json格式配置文件名/// @param 无/// @return string 返回文件名	const string& getFileName() const { return _fileName; }/// @brief 设置json格式配置文件名/// @param fileName 设置保存文件名/// @return 返回文件名void setFileName(const string& fileName) { _fileName = fileName; }/// @brief 获取ADC类型:ADC_82v48,ADC_ak8478,ADC_ak8446/// @param 无/// @return  返回ADC类型const string& getAdcType() const { return _adcType; }/// @brief 设置ADC类型:ADC_82v48,ADC_ak8478,ADC_ak8446/// @param adcType ADC类型/// @return string ADC类型void setAdcType(const string& adcType) { _adcType = adcType; }/// @brief 获取fpga信息/// @param 无/// @return 返回fpga信息map<string, int>& getFpgaMap()  { return _FpgaMap; }/// @brief 设置fpga信息/// @param fpgaMapfpga信息/// @return 无void setFpgaMap(const map<string, int>& fpgaMap) { _FpgaMap = fpgaMap; }/// @brief 获取相机信息/// @param 无/// @return 返回fpga信息const map<string, string>& getCameraInfoMap() const { return _cameraInfoMap; }/// @brief 设置相机信息/// @param cameraInfoMap信息/// @return 无void setCameraInfoMap(const map<string, string>& cameraInfoMap) { _cameraInfoMap = cameraInfoMap; }/// @brief 获取增益数据/// @param cameraInfoMap信息/// @return 增益数据const map<string, vector<int>>& getGainMap() const { return _gainMap; }/// @brief 设置增益数据/// @param gainMap 增益信息/// @return 无void setGainMap(const map<string, vector<int>>& gainMap) { _gainMap = gainMap; }/// @brief 获取偏移数据/// @param 无/// @return 返回增益信息const map<string, vector<int>>& getOffsetMap() const { return _offsetMap; }/// @brief 设置偏移数据/// @param offsetMap 偏移数据/// @return 返回增益信息void setOffsetMap(const map<string, vector<int>>& offsetMap) { _offsetMap = offsetMap; }/// @brief 获取索引、bank、寄存器数据/// @param 无/// @return 返回索引、bank、寄存器数据const map<string, map<string, map<string, int>>>& getIndexBankRegMap() const { return _indexBankRegMap; }/// @brief 设置索引、bank、寄存器数据/// @param 索引、bank、寄存器数据/// @return 无void setIndexBankRegMap(const map<string, map<string, map<string, int>>>& indexBankRegMap) { _indexBankRegMap = indexBankRegMap; }private:string _fileName;     ///json文件名string _adcType;      ///ADC类型:ADC_82v48,ADC_ak8478,ADC_ak8446string _jsonString;   ///json字符串map<string, int> _FpgaMap; /// fpga信息map<string, string> _cameraInfoMap; ///相机信息map<string, vector<int>> _gainMap;  ///增益数据map<string, vector<int>> _offsetMap;///偏移数据map<string, map<string, map<string, int>>> _indexBankRegMap;///索引、bank、寄存器数据json _jsonData;  ///json对象};
}#endif

这里只需要注释头文件即可,不需要在注释cpp文件中注释,当然您也可以连同cpp文件一起注释
格式如下:

/// @brief 功能说明
/// @param 参数1说明
/// @param 参数2说明
/// @param 参数3说明
/// @return 返回值说明

四、使用doxygen生成文档

1.配置文档项目路径、文档生成路径、文档项目名称
在这里插入图片描述
2.防止生成的文档包含中文乱码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.生成chm
在这里插入图片描述
4.显示chm
在这里插入图片描述
5.展示效果,注意这里选择你的chm后缀名文件,就会生成目录,如果选择index.html,就不带目录
在这里插入图片描述
在这里插入图片描述

相关文章:

doxygen制作接口文档

系列文章目录 文章目录 系列文章目录前言一、下载二、安装三、代码注释四、使用doxygen生成文档 前言 每次手动写接口文档太痛苦了&#xff0c;现在福利来了–doxygen Doxygen是软件开发中广泛使用的文档生成器工具。它自动从源代码注释生成文档&#xff0c;解析有关类、函数和…...

PDF怎么在线转Word?介绍四种转换方案

PDF怎么在线转Word&#xff1f;在数字化办公时代&#xff0c;文档的互换性变得尤为重要。PDF格式因其跨平台兼容性和版面固定性而广受欢迎&#xff0c;但有时我们可能需要将PDF文件转换为Word文档&#xff0c;以便进行编辑或进一步处理。以下是四种常见的在线PDF转Word的方法&a…...

大数据应用型产品设计方法及行业案例介绍(可编辑110页PPT)

引言&#xff1a;随着信息技术的飞速发展&#xff0c;大数据已成为推动各行各业创新与变革的重要力量。大数据应用型产品&#xff0c;作为连接海量数据与实际应用需求的桥梁&#xff0c;其设计方法不仅要求深入理解数据特性&#xff0c;还需精准把握用户需求&#xff0c;以实现…...

【Python零基础学习】Python环境安装和IDE选择

文章目录 前言一、Python介绍二、Python下载安装三、IDE选择VS CodePyCharm 四、打印Hello Python World使用cmd使用VS Code 总结 前言 本文是笔者学习Python语言的开篇文章了&#xff0c;Python语法相对比较简单&#xff0c;对编程初学者而言十分友好&#xff0c;应用极其广泛…...

【langchain学习】使用LangChain创建具有上下文感知的问答系统

探讨如何使用LangChain库创建一个上下文感知的问答系统。这个系统能够根据用户的聊天历史&#xff0c;将当前问题转化为一个独立的问题&#xff0c;接着根据上下文提供准确的答案。 1. 导入所需模块 from operator import itemgetter from config import llm # 从config文件…...

原神4.8版本升级计划数据表

原神4.8版本角色数据升级计划表 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原神4.8版本升级计划…...

海南云亿商务咨询有限公司放大电商品牌影响力

在数字化浪潮席卷全球的今天&#xff0c;电商行业以其独特的魅力和无限潜力&#xff0c;成为了推动经济发展的重要力量。而在这片浩瀚的电商海洋中&#xff0c;抖音电商以其独特的短视频直播模式&#xff0c;迅速崛起为一颗璀璨的新星&#xff0c;引领着新一轮的消费潮流。作为…...

用exceljs和file-saver插件实现纯前端表格导出Excel(支持样式配置,多级表头)

exceljs在Jquery&#xff08;HTML&#xff09;和vue项目中实现导出功能 前言Jquery&#xff08;HTML&#xff09;中实现导出第一步&#xff0c;先在项目本地中导入exceljs和file-saver包第二步&#xff0c;封装导出Excel方法&#xff08;可直接复制粘贴使用&#xff09;第三步&…...

TIA博途_下载时提示密码错误,但是之前并没有设置过密码的解决办法

TIA博途_下载时提示密码错误,但是之前并没有设置过密码的解决办法 如下图所示,下载程序时提示:在线检查保护机密PLC组态数据的密码时出错。 原因: 自 TIA Portal V17 起,新增了安全向导用于帮助客户快速进行安全相关的设置。即保护机密的PLC组态数据功能导致出现下载异常。…...

使用消息队列、rocketMq实现通信

1背景 springboot框架&#xff0c; 2需求 后端需要调用一个类似于api这种作用的小工具&#xff0c;获得工具的返回值&#xff0c;后端再根据客户端的返回值进行更新数据操作 3讨论 1工具开发者使用的是python,将工具封装起来&#xff0c;暴露成web接口供后端调用 2方式一能…...

通过LLM大模型将「白雪公主的故事」转为图数据存储

&#x1f4a1; 本次将使用LLM大模型将「白雪公主的故事」转为图数据存储于neo4j数据库中&#xff0c;并展示图数据部分的效果 故事内容 很久很久以前&#xff0c;在一个遥远的王国里&#xff0c;有一位美丽的**王后**生下了一个皮肤像雪一样白皙、嘴唇像血一样鲜红的**女儿**…...

MyBatisPlus 第一天

数据库创建表 CREATE DATABASE mybatis_plus /*!40100 DEFAULT CHARACTER SET utf8mb4 */; use mybatis_plus; CREATE TABLE user ( id bigint(20) NOT NULL COMMENT 主键ID, name varchar(30) DEFAULT NULL COMMENT 姓名 , age int(11) DEFAULT NULL COMMENT 年龄 , email va…...

线程与多线程(二)

线程与多线程&#xff08;二&#xff09; 一、线程互斥1、相关概念 二、互斥锁1、介绍2、使用场景3、初始化&#xff08;1&#xff09;函数&#xff08;2&#xff09;概念 4、销毁&#xff08;1&#xff09;函数&#xff08;2&#xff09;概念 5、加锁&#xff08;1&#xff09…...

算法板子:欧拉函数——求一个数的欧拉函数、线性时间内求1~n所有数的欧拉函数

目录 1. 欧拉函数 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;性质 &#xff08;3&#xff09;计算公式 2. 求一个数的欧拉函数 &#xff08;1&#xff09;模拟过程 &#xff08;2&#xff09;代码 3. 线性时间内求1~n所有数的欧拉函数——筛法求欧拉函…...

2024牛客暑期多校训练营8

文章目录 A. Haitang and GameE.Haitang and MathJ. Haitang and TriangleK. Haitang and Ava A. Haitang and Game 通过审题可以知道&#xff0c;最后的胜者和若干次操作后最多能增加的数的奇偶有关。 由于 a i a_i ai​ 较小&#xff0c;所以我们枚举每一个没出现过的 x …...

git的一些操作指令

一、git 提交规范 commit message subject &#xff1a; 空格 message 主体 feat: 新功能&#xff08;feature&#xff09;用于提交新功能。fix: 修复 bug用于提交 bug 修复。docs: 文档变更用于提交仅文档相关的修改。style: 代码风格变动&#xff08;不影响代码逻辑&…...

【IT行业研究报告】Internet Technology

一、引言 随着信息技术的飞速发展&#xff0c;IT行业已成为全球经济的重要驱动力。从云计算、大数据、人工智能到物联网&#xff0c;IT技术正深刻改变着各行各业的生产方式、商业模式和人们的生活方式。本报告旨在深入分析IT行业的现状、发展趋势和挑战&#xff0c;探讨其在各…...

GLM大模型的机器翻译能力测试

背景介绍 最近想对GLM-4今年发布的几个大模型 glm-4-0520&#xff0c;glm-4-air以及glm-4-flash简单评测一下它们的机器翻译能力&#xff0c;由于这几个大模型的容量和训练数据都有区别&#xff0c;所以它们的翻译能力也是不同的。我们这里就分别选择一些有趣的&#xff0c;有…...

【硬件产品经理】汽车A样设计

目录 简介 制造方式 作者简介 简介 一般被称作原型样件(Prototype)。 主要是根据系统需求设计,实现基本功能和关键尺寸,用于基本功能的验证,用于初期产品软件调试和Hil台架测试(Hardware in Loop,硬件在环)的样机阶段。 也就说在设计初期,A样的主要目的可以划分…...

Ubuntu22.04系统中安装机器人操作系统ROS

在Ubuntu 22.04上安装ROS&#xff08;Robot Operating System&#xff09;的过程可以分为几个主要步骤。请注意&#xff0c;ROS有不同的版本&#xff08;如ROS 1的Melodic、Noetic等&#xff0c;以及ROS 2的Foxy、Humble等&#xff09;&#xff0c;这些版本对Ubuntu的支持程度可…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》

近日&#xff0c;嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》&#xff0c;海云安高敏捷信创白盒&#xff08;SCAP&#xff09;成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天&#xff0c;网络安全已成为企业生存与发展的核心基石&#xff0c;为了解…...

Electron简介(附电子书学习资料)

一、什么是Electron&#xff1f; Electron 是一个由 GitHub 开发的 开源框架&#xff0c;允许开发者使用 Web技术&#xff08;HTML、CSS、JavaScript&#xff09; 构建跨平台的桌面应用程序&#xff08;Windows、macOS、Linux&#xff09;。它将 Chromium浏览器内核 和 Node.j…...

IP选择注意事项

IP选择注意事项 MTP、FTP、EFUSE、EMEMORY选择时&#xff0c;需要考虑以下参数&#xff0c;然后确定后选择IP。 容量工作电压范围温度范围擦除、烧写速度/耗时读取所有bit的时间待机功耗擦写、烧写功耗面积所需要的mask layer...