不得不会的代码注释工具——doxygen

2023-11-11

不得不会的代码注释工具——doxygen

下载

官网下载二进制或者直接用yum或apt工具下载。

使用流程

  • 进入项目目录生成doxygen配置文件

    doxygen -g
    
  • 修改doxygen配置文件

    # 程序文档输出目录
    
    OUTPUT_DIRECTORY    =  doc/
    
    # 程序文档语言环境
    
    OUTPUT_LANGUAGE    = Chinese
    
    # 如果是制作 C 程序文档,该选项必须设为 YES,否则默认生成 C++ 文档格式
    
    OPTIMIZE_OUTPUT_FOR_C  = YES
    
    # 对于使用 typedef 定义的结构体、枚举、联合等数据类型,只按照 typedef 定义的类型名进行文档化
    
    TYPEDEF_HIDES_STRUCT   = YES
    
    # 在 C++ 程序文档中,该值可以设置为 NO,而在 C 程序文档中,由于 C 语言没有所谓的域/名字空间这样的概念,所以此处设置为 YES
    
    HIDE_SCOPE_NAMES        = YES
    
    # 让 doxygen 静悄悄地为你生成文档,只有出现警告或错误时,才在终端输出提示信息
    
    QUIET   = YES
    
    # 只对头文件中的文档化信息生成程序文档
    
    FILE_PATTERNS          = *.h
    
    # 递归遍历当前目录的子目录,寻找被文档化的程序源文件
    
    RECURSIVE              = YES
    
    # 示例程序目录
    
    EXAMPLE_PATH           = example/
    
    # 示例程序的头文档 (.h 文件) 与实现文档 (.c 文件) 都作为程序文档化对象
    
    EXAMPLE_PATTERNS       = *.c \
    
                                   *.h
    
    # 递归遍历示例程序目录的子目录,寻找被文档化的程序源文件
    
    EXAMPLE_RECURSIVE      = YES
    
    # 允许程序文档中显示本文档化的函数相互调用关系
    REFERENCED_BY_RELATION = YES
    
    REFERENCES_RELATION    = YES
    
    REFERENCES_LINK_SOURCE = YES
    
    # 不生成 latex 格式的程序文档
    
    GENERATE_LATEX         = NO
    
    # 在程序文档中允许以图例形式显示函数调用关系,前提是你已经安装了 graphviz 软件包
    
    HAVE_DOT               = YES
    
    CALL_GRAPH            = YES
    
    CALLER_GRAPH        = YES
    
    #让doxygen从配置文件所在的文件夹开始,递归地搜索所有的子目录及源文件
    
    RECURSIVE = YES  
    
    #在最后生成的文档中,把所有的源代码包含在其中
    
    SOURCE BROWSER = YES
    
    $这会在HTML文档中,添加一个侧边栏,并以树状结构显示包、类、接口等的关系
    
    GENERATE TREEVIEW = ALL
    
    
    EXTRACT_ALL:这个标记告诉 doxygen,即使各个类或函数没有文档,也要提取信息。必须把这个标记设置为 Yes。
    
    EXTRACT_PRIVATE:把这个标记设置为 Yes。否则,文档不包含类的私有数据成员。
    
    EXTRACT_STATIC:把这个标记设置为 Yes。否则,文档不包含文件的静态成员(函数和变量)。
    
  • 生成文档

    doxygen ./Doxyfile
    

注释规则

项目注释

  • 项目注释块用于对项目进行描述,每个项目只出现一次,一般可以放在main.c主函数文件头部。对于其它类型的项目,置于定义项目入口函数的文件中。对于无入口函数的项目,比如静态库项目,置于较关键且不会被外部项目引用的文件中。
  • 项目注释块以“/** @mainpage”开头,以“*/”结束。包含项目描述、及功能描述、用法描述、注意事项4个描述章节。
  • 项目描述章节描述项目名称、作者、代码库目录、项目详细描述4项内容,建议采用HTML的表格语法进行对齐描述。
  • 功能描述章节列举该项目的主要功能。
  • 用法描述章节列举该项目的主要使用方法,主要针对动态库、静态库等会被其它项目使用的项目。对于其它类型的项目,该章节可省略。
  • 注意事项章节描述该项目的注意事项、依赖项目等相关信息
/**@mainpage  
* @section   项目详细描述
*
* @section   功能描述  
* 
* @section   用法描述 
* 

**********************************************************************************
*/

项目注释也可以使用markdown文件作为主页,通过指定md文件路径来配置。

USE_MDFILE_AS_MAINPAGE = doc/readme.md

若markdown文件里包含图片,可能会出现图片无法显示的情况,这个时候需先检查图片路径是否正确,同时还需要在doxyfile中添加图片路径方可显示。

IMAGE_PATH             = ./doc/images 

文件注释

/**
 * @file 文件名
 * @brief 简介
 * @details 细节
 * @mainpage 工程概览
 * @author 作者
 * @version 版本号
 * @date 年-月-日
 */

全局常量/变量/宏定义/结构体定义/类定义的注释

/// 缓存大小
#define BUFSIZ 1024*4
#define BUFSIZ 1024*4 ///< 缓存大小

函数注释

/**
 * @brief 函数简介
 *
 * @param 形参 参数说明
 * @param 形参 参数说明
 * @return 返回值说明
*/

reference

  1. https://blog.srefan.com/2020/05/doxygen-generate-docs/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不得不会的代码注释工具——doxygen 的相关文章

  • AIDL通信过程中设置死亡代理

    概述 在进行进程间通信的过程中 如何服务端进程由于某种原因异常终止 我们的远程调用就会失败 影响我们的功能 那么怎么样能够知道服务端进程是否终止了呢 那就是给Binder设置死亡代理 下面看看如何设置 Override public voi
  • 阿里云2核4G服务器优惠价格30元3个月?小心坑

    2024年阿里云2核4G服务器优惠价格30元3个月 活动 https t aliyun com U bLynLC 配置为云服务器ECS经济型e实例ecs e c1m2 large 3M固定带宽 系统盘为40GB ESSD Entry 活动打
  • 服务器OS是什么意思?

    一 什么是服务器操作系统 服务器不仅仅是由高性能硬件组成 并且是要求客户端操作系统 如Windows和Mac OS 服务器还需要一个称为服务器操作系统的操作系统 二 与客户端OS的区别 无论是Windows还是Mac OS 家庭或办公室使用
  • 双系统安装win7出现grub怎么解决

    我们在重装系统时 特别苹果装双系统时 会出现安装过程或者安装后的问题 发现系统开机显示grub 导致不能正常进入系统 让人很是着急 其实出现这种情况是因为系统找不到主引记录所导致 只要重建主引记录mbr即可解决 下面小编就教教大家win7系
  • Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

    通过本篇文章 我们将会学习以下内容 1 在Windows上安装Metasploit 2 在Linux和MacOS上安装Metasploit 3 在Kali Linux中使用 Metasploit 4 升级Kali Linux 5 使用虚拟化
  • 在阿里云ECS云服务器上部署和使用开源的应用程序容器引擎Docker

    Docker 是一个开源的应用程序容器引擎 具有可移植性 可扩展性 高安全性和可管理性等优势 它允许开发人员将应用程序和依赖项打包到可移植容器中 从而在 Linux 机器上高效构建 部署和管理应用程序 阿里云提供Docker镜像仓库 用于快
  • 第二节课内容学习

    监听远程端口 并映射到本地 先配置ssh的公私钥非对称加密 假设远程开放的端口为33090 在本地计算机终端执行 ssh CNg L 6006 127 0 0 1 6006 root ssh intern ai org cn p 33090
  • 小白成功搭建Elasticsearch 只需五步(包含配置xpack)

    ElasticSearch 安装成功后 是不需要使用用户名和密码就可以访问的 这也是在配置skywalking的apm过程中 连接es数据库无需设置用户名和密码的原因 启动es也非常的简单 在 bin 目录下运行elasticsearch
  • 进程间通信

    进程间通信 进程间通信介绍 进程间通信目的 数据传输 一个进程需要将它的数据发送给另一个进程 资源共享 多个进程之间共享同样的资源 通知事件 一个进程需要向另一个或一组进程发送消息 通知它 它们 发生了某种事件 如进程终止 时要通知父进程
  • 如何使用内网穿透实现iStoreOS软路由公网远程访问局域网电脑桌面

    文章目录 简介 一 配置远程桌面公网地址 二 家中使用永久固定地址 访问公司电脑 具体操作方法是 简介 软路由 是PC的硬件加上路由系统来实现路由器
  • DreadHunger恐惧饥荒海上狼人杀服务器搭建架设教程windows系统

    DreadHunger 恐惧饥荒海上狼人杀服务器搭建架设教程windows系统 大家好我是艾西 在11月底我有发文 DreadHunger 恐惧饥荒海上狼人杀官方停服的消息 当时在官方的公告模版中公布了在2024年一月一日会将服务端公开让喜
  • centos系统有什么好处?

    CentOS是一种基于开源代码的Linux操作系统 它有以下几个优势 1 稳定性 CentOS是一种非常稳定的操作系统 它的代码经过了严格的测试和审查 因此它非常适合作为服务器操作系统使 用 2 安全性 由于CentOS是基于开源代码的操作
  • messages,CentOS 7不收集日志或不存在 /var/log/messages

    var log message var log secure等都不记录了 并且都是空文件 重启机器 reboot 无效 重启日志 systemctl start rsyslog 无效 怀疑空间不足 删除 var log messages 重
  • 步骤详图 教你在linux搭建容器环境

    警告 切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker 1 准备工作 系统要求 要安装Docker CE 社区版 操作系统的最低要求是CentOS7 7以下版本都不被支持 卸载旧版本 Docker改版
  • 什么是充放电振子理论?

    CHAT回复 充放电振子模型 Charging Reversal Oscillator Model 是一种解释ENSO现象的理论模型 这个模型把ENSO现象比喻成一个 热力学振荡系统 在这个模型中 ENSO现象由三个组成部分 充电 Char
  • Vue 如何使用WebSocket与服务器建立链接 持续保持通信

    WebSocket 浏览器通过JavaScript向服务器发出建立WebSocket链接的请求 链接建立后 客户端和服务器端就可以通过TCP链接直接交互数据 WebSocket链接后可以通过 send 方法来向服务器发送数据 并通过 onn
  • Kubernetes (十一) 存储——Secret配置管理

    一 简介 从文件创建 echo n admin gt username txt echo n westos gt password txt kubectl create secret generic db user pass from fi
  • Kubernetes (十二) 存储——Volumes配置管理

    一 卷的概念 官方地址 卷 Kubernetes https v1 24 docs kubernetes io zh cn docs concepts storage volumes 二 卷的类型及使用 emptyDir卷 1 创建编辑文件
  • ssh:connect to host github.com port 22: Connection timed out

    解决流程 1 将github的端口由22改为443 ssh T p 443 git ssh github com 2 接着输入yes进行确认 The authenticity of host ssh github com 443 192 1
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作

随机推荐

  • 肌电信号采集电路分析

    最近在开发肌电信号的采集 表面肌电信号是非常微弱的生物信号 正常人体表面肌电信号赋值为0 1 5mV 主要能量频段集中在10 150Hz 电路主要是根据原始信号 设计相应的放大电路 滤波电路 下面直接放原理图说明 一级放大电路 一级放大电路
  • Spring MVC使用注解实现账户注册与登陆

    涉及到的注解 Controller 控制器类 RequestMapping 映射路径 RequestParam 用于将指定的请求参数赋值给方法中的形参 定义域对象 User1 用来接受并封装前台传递的数据 package com wen d
  • Java基础(七)——eclipse、集合(容器)

    集合 1 集合框架 l 所谓的框架就是一个类库的集合 集合框架就是一个用来表示和操作集合的统一的架构 它包含了实现集合的接口和类 l 集合框架中不同的集合类有各自不同的数据结构 所以在使用中要根据应用的性能要求来选择不用的集合类 l 集合类
  • C语言指针初阶

    思维导图 目录 编辑 1 指针与内存 1 1内存中的门牌号 地址 是如何编号的 1 2一个指针的大小 在32位平台上 1 3内存总空间大小 2 指针的使用 2 1指针的构成 2 2指针类型的作用 1 决定指针访问的权限的大小 2 决定指针走
  • 在家带娃有没有什么副业可以做?在家带娃的副业有哪些?

    很多朋友在有了自己的孩子之后 为了给孩子一个良好的成长环境 就会辞去工作专心在家带孩子 不过 考虑生活开销的支出问题 还是会想要做点副业赚钱 那在家带孩子可以做什么副业呢 1 数据录入 这是一个大行业 几乎所有人都可以做 需要的仅仅是一台能
  • Oracle TNS简述

    什么是TNS TNS是Oracle Net的一部分 专门用来管理和配置Oracle数据库和客户端连接的一个工具 在大多数情况下客户端和数据库要通讯 必须配置TNS 当然在少数情况下 不用配置TNS也可以连接Oracle数据库 比如通过JDB
  • java使用xfire创建和调用webservices

    1 创建工程 File gt New gt Web Service Project 弹出Web Service Project窗口 需要填写Project Name 例子是Demo 选择XFire 然后一路next 直到完成 创建完成后 打
  • 如何让Element UI的Message消息提示每次只弹出一个

    Element UI的Message消息提示是点击一次触发一次的 在开发的时候经常会作为一些校验提示 但是公司的测试人员在进行测试时会一直点 然后就会出现如下图的情况 虽然客户使用的时候一般来说不会出现这种情况 毕竟客户不会闲着没事一直点点
  • 用 visio 2013反转图形或镜像图形

    软件版本 visio 2013 选择待反转图形 依次点击 开始 位置 旋转形状 即可根据需求进行图形反转 若需要进行图形镜像操作 可提前将图形复制出一份 将复制出来的图形进行垂直反转或水平反转
  • 2020年tensorflow定制训练模型笔记(3)——开始训练

    现在 我们开始训练文件 这里 我将用一些训练好的模型来做迁移训练 这里简单介绍一下迁移训练 迁移训练就是在别人训练的模型基础上继续训练 这样我们的模型训练就不是从零开始 加快速度以及提高准确率 我讲的比较简单 参考网址在这 https bl
  • 华为OD题目:快递投放问题

    华为OD题目 快递投放问题 有N个快递站点用字符串标识 某些站点之间有道路连接 每个站点有一些包裹要运输 每个站点间的包裹不重复 路上有检查站会导致部分货物无法通行 计算哪些货物无法正常投递 输入描述 1 第一行输入M N M个包裹N个道路
  • python中的random和range

    random import random print random randint 1 10 产生 1 到 10 的一个整数型随机数 包括1和10 print random random 产生 0 到 1 之间的随机浮点数 print ra
  • 靶场 : upload-labs1-10

    搭建 用phpstudy搭建的 搭建很简单 下载源码 放置在phpstudy的根目录下 在phpstudy中创建 步骤 这里上传的文件内容是一句话木马 pass 1 上传一个php文件试一试 传不上的 使用的白名单过滤的 我们考虑一下是什么
  • 12个超好用的配色网站

    每次做海报做ppt的时候总是为配色发愁 到底怎样才能调出好看的配色方案呢 调着调着感觉自己已经是个色盲了 今天小编就给你们带来了福利 12个超好用的配色网站推荐 01 Material Palette 网站地址 http www mater
  • 【SpringCloud】四、Spring Cloud Config

    Spring Cloud Config 前言 一 什么是配置中心 1 为什么需要分布式配置中心 2 常用分布式配置中心框架 二 什么是Spring Cloud Config 1 Springcloud config 的工作原理 2 构建 S
  • truffle教程

    直接在geth的控制台通过solc进行编译部署的示例已经很多了 比如这篇博客 此处不再赘述 本文主要演示怎样通过truffle部署以太坊智能合约 truffle是一个以太坊智能合约开发框架 它会帮你做很多琐碎的事情 安装使用都很简单 1 安
  • element-ui页面加载正确,页码错误

    期望效果 进入详情前第二页 从详情返回后还在第二页 先说我之前的误区 哈哈 之前想的是路由跳转时传参到详情页 详情页跳回时再传回来 绕了一圈 并不是最好的解决方案 解决办法 sessionStorage或localStorage 本质上最正
  • 深入理解 ES6 Promise

    https segmentfault com a 1190000020934044 引语 最近一段时间在重温ES6 Promise应该是是ES6新特性中非常重要的一部分内容 其实Promise在我日常开发中已经用得比较多 但大多数时候只是知
  • 智能优化算法之粒子群算法(PSO)的实现(Python附源码)

    一 粒子群算法的实现思路 粒子群算法 Particle Swarm Optimization PSO 是于1995年被Kennedy等人提出的一种模拟自然界中鸟群进行觅食过程的一种群智能优化算法 该算法将待求解问题的每一个候选解视作鸟群中的
  • 不得不会的代码注释工具——doxygen

    不得不会的代码注释工具 doxygen 下载 官网下载二进制或者直接用yum或apt工具下载 使用流程 进入项目目录生成doxygen配置文件 doxygen g 修改doxygen配置文件 程序文档输出目录 OUTPUT DIRECTOR