Doxygen仅解析以///或/开头的文档块注释,普通//或/ /注释被忽略;需符合其标记规范才能生成HTML文档。
Doxygen 能直接从 C++ 源码注释生成 HTML 文档,但前提是注释格式必须被它识别——不是所有 // 或 /* */ 都算“文档注释”,只有以特定标记开头(如 ///、/**)且结构合规的注释才会被提取。
Doxygen 默认只处理“文档块”(documented blocks),普通代码
注释会被忽略。关键看开头标记和上下文:
/// 或 ///:用于单行函数/变量声明上方,或跟在声明后(int x; ///)
/** ... */ 或 /*! ... */:多行块,必须紧贴声明前(中间不能有空行)//! 和 //! 也支持,但不如 /// 常用
Doxyfile 必设参数运行 doxygen -g 生成默认配置后,至少要改这几项,否则 HTML 输出可能为空或乱码:
PROJECT_NAME = "MyLib":项目名,影响首页标题INPUT = ./src ./include:指定含源码和头文件的目录(支持通配符如 ./src/*.h)RECURSIVE = YES:是否递归扫描子目录EXTRACT_ALL = YES:强制提取所有符号(即使没写注释),方便初期梳理接口GENERATE_HTML = YES(默认已开),同时建议开 GENERATE_TREEVIEW = YES 方便导航OUTPUT_DIRECTORY = ./docs:输出路径,确保该目录可写最常因三类问题导致内容缺失:
class Widget { };
/// @brief A widget
class Widget { }; → Doxygen 不关联// 而非 ///,比如:// @param x horizontal position void setPos(int x);→ 不解析
INPUT 路径写错,或文件扩展名未包含在 FILE_PATTERNS 中(默认含 *.h *.hpp *.cpp *.cc,但若用 .tcc 就要手动加)INPUT 只指定了 ./include,而头文件里没写文档注释假设有 math_utils.h:
/// @file math_utils.h /// @brief Basic math utilities for vector operations.ifndef MATH_UTILS_H
define MATH_UTILS_H
/// @brief Compute squared distance between two 2D points. /// @param x1 X coordinate of first point /// @param y1 Y coordinate of first point /// @param x2 X coordinate of second point /// @param y2 Y coordinate of second point /// @return Squared Euclidean distance (no sqrt) double sqDistance(double x1, double y1, double x2, double y2);
endif // MATH_UTILS_H
配好 Doxyfile 后执行 doxygen,就会在 ./docs/html/index.html 里看到带参数说明的函数页。注意:@file 和 @brief 这类命令必须写在注释块内,且大小写敏感(@param 不是 @PARAM)。
真正卡住人的往往不是语法,而是注释与声明的物理位置关系、路径配置的拼写错误、以及默认 EXTRACT_ALL = NO 导致未注释的类直接消失——先开 EXTRACT_ALL 看全貌,再逐个补文档,比反复猜哪里漏了更省时间。
# html
# c++
# 文档
# 递归
# 写在
# 头文件
# 才会
# 会在
# 用了
# 这类
# 而非
# 跟在
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
mac怎么查看wifi密码_MAC查看已连接WiFi密码方法【技巧】
php接口返回数据乱码怎么办_php接口调试编码问题解决【指南】
Windows10怎么卸载预装软件_Windows10预装软件卸载步骤【教程】
php中$this和::能混用吗_对象与静态作用域冲突解决【方法】
Windows11怎样开启游戏模式_Windows11游戏模式开启攻略【方法】
Win11怎么设置按流量计费_Win11限制后台流量消耗【网络】
php下载安装后swoole扩展怎么安装_异步框架支持【汇总】
如何用正则表达式精确匹配最多含一个换行符的起止片段
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
Windows怎样拦截QQ浏览器广告_Windows拦截QQ浏览器广告方法【方法】
Win11此电脑不在桌面上_Windows 11桌面图标设置找回【步骤】
Windows任务计划服务异常原因_任务调度失败的处理方案
C#如何使用Channel C#通道实现异步通信
Mac如何整理桌面文件_Mac使用堆栈功能一键整理
C++中引用和指针有什么区别?(代码说明)
Win11怎么开启智能存储_Windows11存储感知自动清理文件
MAC如何隐藏文件夹及文件_MAC终端命令隐藏与第三方工具加密【教程】
php怎么下载安装并配置环境变量_命令行调用PHP技巧【技巧】
如何使用Golang log设置日志输出格式_Golang log日志格式示例
如何在Golang中处理JSON字段缺失_Golangjson解析字段校验方法
Python与Docker容器化部署实战_镜像构建与CI/CD流程
Windows10如何查看保存的WiFi密码_Win10命令行netsh wlan查询
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
php做exe支持多线程吗_并发处理实现方式【详解】
c++的mutex和lock_guard如何使用 互斥锁保护共享资源【多线程】
如何使用正则表达式提取以编号开头、后接多个注解的逻辑分组块
Win11系统更新后黑屏怎么办 Win11更新黑屏修复教程【方法】
用lighttpd能运行php吗_lighttpd配置php步骤【教程】
Win11怎么更改文件夹图标_自定义Win11文件夹外观样式【详解】
如何在Golang中使用replace替换模块_指定本地或远程路径
如何使用Golang encoding/json解析JSON_Golang encoding/json解析与序列化示例
Go语言中slice追加操作的底层共享机制解析
Python配置文件操作教程_JSONINIYAML解析与应用实战
如何使用Golang处理网络超时错误_Golang请求超时异常处理方法
Win11怎么关闭通知中心_Windows11系统通知与专注助手设置
Windows10系统服务优化指南_Win10禁用不必要服务提升性能
windows 10专注助手怎么关闭_windows 10禁用通知提醒功能方法
如何在Golang中使用闭包_封装变量与函数作用域
如何在Golang中引入测试模块_Golang测试包导入与使用实践
Win11怎么激活Windows10_Win11激活Win10系统方法【步骤】
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
Win11怎么开启游戏工具栏_Windows11 Xbox Game Bar快捷键
Mac如何修改Hosts文件?(本地开发与屏蔽网站)
Python抽象类与接口设计_规范说明【指导】
Python对象比较与排序_集合使用说明【指导】
Win11怎么设置鼠标宏_Win11鼠标按键自定义编程教程【详解】
php查询数据怎么分组_groupby分组查询配合聚合函数【技巧】
Win11怎么把图标拖到任务栏_Win11固定应用快捷方式指南【方法】
Windows 11登录时提示“用户配置文件服务登录失败”怎么办_Windows 11修复损坏的用户配置文件
Win11怎么关闭定位服务_保护Win11位置隐私设置指南【详解】
2026-01-01
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。