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 】
相关推荐:
如何有效拦截拼接式恶意域名的垃圾信息
Win11触摸板没反应怎么办_开启Win11笔记本触摸板手势教程【步骤】
Win11怎么更改账户头像_Windows 11自定义用户头像图片设置【步骤】
如何在 Go 中正确反序列化多个并列的 XML 元素(而非 XML 数组)
Win11局域网共享怎么设置 Win11文件夹网络共享教程【详解】
Win11怎么关闭VBS安全性_Windows11提升游戏性能关闭虚拟化安全
Windows 11如何查看系统激活密钥_Windows 11使用CMD或PowerShell命令找回Product Key
零基础学会Python自动化办公_高效处理Excel与PDF文档
c++中的std::conjunction和std::disjunction是什么_c++模板元编程逻辑运算【C++17】
如何在Golang中实现基础配置管理功能_Golang配置文件读取与更新示例
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
如何在 Go 中创建包含 map 的 slice(嵌套数据结构)
Win11怎么查看已连接wifi密码 Win11查已连wifi密码步骤【教程】
如何用正则与预处理高效拦截带干扰符的恶意域名
php怎么下载安装后设置默认字符集_utf8配置步骤【详解】
Go 中实现 Python urllib.quote() 等效功能的正确方式
Win11怎么关闭触摸屏_禁用Win11笔记本触摸屏功能设置【教程】
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
如何使用Golang实现容器安全扫描_Golang Docker镜像漏洞检测方法
如何在Golang中实现并发消息队列消费者_Golang channel消息消费实践
如何使用Golang encoding/json解析JSON_Golang encoding/json解析与序列化示例
Win11怎么设置ipv4地址_Windows 11固定静态IP地址配置教程【详解】
短链接怎么自定义还原php_修改解码规则适配需求【汇总】
VSC怎样在VSC中调试PHPAPI_接口调试技巧【详解】
Python文件操作优化_大文件与流处理解析【教程】
如何使用Golang捕获并记录协程panic_保证主程序稳定运行
Python与Docker容器化部署实战_镜像构建与CI/CD流程
Python安全爬虫设计_IP代理池与验证码识别策略解析
如何使用Golang template生成文本模板_动态生成HTML或文本
PHP 中如何在函数内持久化修改引用变量的指向
c# 如何用c#实现一个支持优先级的任务队列
Win11文件夹预览图不显示怎么办_Win11缩略图缓存重建修复【教程】
如何在Golang中配置代码格式化工具_使用gofmt和goimports
c++怎么使用std::unique实现去重_c++ 容器元素排序与连续重复删除【教程】
TestNG的testng.xml配置文件怎么写
Win11怎么关闭触摸键盘图标_Windows11任务栏系统托盘设置
Python网络日志追踪_请求定位解析【教程】
php下载安装包太大怎么下载_分卷压缩下载方法【教程】
如何用正则表达式精确匹配“start”到“end”之间最多含一个换行符的文本段
如何使用Golang recover捕获panic_防止程序崩溃并处理异常
php报错怎么查看_定位PHP致命错误与警告的方法【教程】
PhpStorm怎么调试PHP代码_PhpStorm断点设置与调试启动步骤【指南】
Win11怎么自动隐藏任务栏_Win11全屏显示设置【美化】
Win10怎样卸载DockerDesktop_Win10卸载DockerDesktop步骤【步骤】
Win11视频默认播放器怎么改_Win11关联第三方播放器【步骤】
Win10如何关闭安全中心所有通知 Win10禁用Windows Defender提醒【设置】
Win10文件历史记录怎么用 Win10开启自动备份文件教程【防丢】
Win10如何卸载微软拼音输入法 Win10只保留一个输入法【教程】
Mac的“调度中心”与“空间”怎么用_Mac多桌面高效管理【技巧】
Python集合操作技巧_高效去重解析【教程】
2026-01-01
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。