自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 收藏
  • 关注

原创 包管理:vcpkg与Conan的选型指南

模板特化是C++泛型编程的利器,偏特化实现精准的类型适配,可变参数模板则扩展了动态组合能力。合理运用这些技巧,可在保持代码简洁性的同时,针对关键路径进行极致优化。指针时,直接解引用比较比比较地址更合理12。特化分为全特化(完全指定模板参数)和偏特化(部分参数固定),后者能实现更精细化的类型适配24。当通用模板无法满足特定类型的特殊需求时,特化机制允许我们为这些类型定制专用实现。‌:偏特化必须保留至少一个模板参数,且需明确指定参数位置2。‌:编译时多态避免虚函数开销,适合高性能场景35。

2025-09-30 05:25:08 896

原创 调试技巧:GDB多线程核心转储分析

模板特化是C++泛型编程的利器,偏特化实现精准的类型适配,可变参数模板则扩展了动态组合能力。合理运用这些技巧,可在保持代码简洁性的同时,针对关键路径进行极致优化。指针时,直接解引用比较比比较地址更合理12。特化分为全特化(完全指定模板参数)和偏特化(部分参数固定),后者能实现更精细化的类型适配24。当通用模板无法满足特定类型的特殊需求时,特化机制允许我们为这些类型定制专用实现。‌:偏特化必须保留至少一个模板参数,且需明确指定参数位置2。‌:编译时多态避免虚函数开销,适合高性能场景35。

2025-09-30 05:23:47 547

原创 静态分析:C++Clang-Tidy规则定制

模板特化是C++泛型编程的利器,偏特化实现精准的类型适配,可变参数模板则扩展了动态组合能力。合理运用这些技巧,可在保持代码简洁性的同时,针对关键路径进行极致优化。指针时,直接解引用比较比比较地址更合理12。特化分为全特化(完全指定模板参数)和偏特化(部分参数固定),后者能实现更精细化的类型适配24。当通用模板无法满足特定类型的特殊需求时,特化机制允许我们为这些类型定制专用实现。‌:偏特化必须保留至少一个模板参数,且需明确指定参数位置2。‌:编译时多态避免虚函数开销,适合高性能场景35。

2025-09-30 05:21:50 719

原创 音视频处理:C++FFmpeg硬编解码优化

模板特化是C++泛型编程的利器,偏特化实现精准的类型适配,可变参数模板则扩展了动态组合能力。合理运用这些技巧,可在保持代码简洁性的同时,针对关键路径进行极致优化。指针时,直接解引用比较比比较地址更合理12。特化分为全特化(完全指定模板参数)和偏特化(部分参数固定),后者能实现更精细化的类型适配24。当通用模板无法满足特定类型的特殊需求时,特化机制允许我们为这些类型定制专用实现。‌:偏特化必须保留至少一个模板参数,且需明确指定参数位置2。‌:编译时多态避免虚函数开销,适合高性能场景35。

2025-09-30 05:20:26 608

原创 金融量化:C++低延迟交易系统实现

模板特化是C++泛型编程的利器,偏特化实现精准的类型适配,可变参数模板则扩展了动态组合能力。合理运用这些技巧,可在保持代码简洁性的同时,针对关键路径进行极致优化。指针时,直接解引用比较比比较地址更合理12。特化分为全特化(完全指定模板参数)和偏特化(部分参数固定),后者能实现更精细化的类型适配24。当通用模板无法满足特定类型的特殊需求时,特化机制允许我们为这些类型定制专用实现。‌:偏特化必须保留至少一个模板参数,且需明确指定参数位置2。‌:编译时多态避免虚函数开销,适合高性能场景35。

2025-09-30 05:19:16 960

原创 内存检测:Valgrind与ASan对比

模板特化是C++泛型编程的利器,偏特化实现精准的类型适配,可变参数模板则扩展了动态组合能力。合理运用这些技巧,可在保持代码简洁性的同时,针对关键路径进行极致优化。指针时,直接解引用比较比比较地址更合理12。特化分为全特化(完全指定模板参数)和偏特化(部分参数固定),后者能实现更精细化的类型适配24。当通用模板无法满足特定类型的特殊需求时,特化机制允许我们为这些类型定制专用实现。‌:偏特化必须保留至少一个模板参数,且需明确指定参数位置2。‌:编译时多态避免虚函数开销,适合高性能场景35。

2025-09-30 05:18:27 148

原创 基于C++的编译器插件开发指南

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:25:50 109

原创 C++在云原生架构中的部署优化

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:25:19 207

原创 现代C++中符号可见性控制策略

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:24:48 106

原创 基于C++的依赖管理工具开发实践

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:24:17 227

原创 C++在大型团队中的编码规范实施

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:23:46 128

原创 现代C++中接口兼容性保障方案

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:23:14 265

原创 基于C++的编译器标志自动生成工具

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:22:43 297

原创 C++在容器化环境中的性能调优

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:22:12 81

原创 现代C++中跨语言接口的ABI稳定性

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:21:41 273

原创 基于C++的代码质量度量体系构建

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:21:10 196

原创 C++在微服务架构中的序列化优化

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:20:39 116

原创 现代C++文档生成工具链的集成实践

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:20:08 288

原创 基于C++的API版本控制策略设计

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:19:37 80

原创 C++在持续交付中的构建加速方案

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:19:05 116

原创 现代C++代码审查中的常见陷阱识别

以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。对于遗留系统,建议采用分层重构策略:核心模块优先模块化,外围组件逐步迁移。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;工具链支持:MSVC/Clang对模块支持较完善,GCC需-fmodules实验性选项。

2025-09-29 06:18:34 108

原创 游戏AI中C++神经网络加速

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 07:02:11 308

原创 基于C++的区块链共识算法实现

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 07:01:40 177

原创 现代C++中协程取消机制设计

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 07:01:09 346

原创 基于C++的编译器优化器实现

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 07:00:38 291

原创 现代C++中constexpr变量使用

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 07:00:07 326

原创 游戏开发中C++ECS架构实践

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 06:59:36 269

原创 基于C++的虚拟机字节码解释器

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 06:59:05 218

原创 现代C++中概念检查的扩展应用

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 06:58:33 222

原创 基于C++的编译器后端指令选择

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 06:58:02 255

原创 游戏引擎中C++资源加载器设计

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 06:57:31 124

原创 基于C++的嵌入式实时操作系统移植

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 06:57:00 306

原创 基于C++的编译器前端语法树构建

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 06:56:29 198

原创 C++与Go语言互调用的性能损耗分析

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 06:55:58 310

原创 基于C++的密码学算法实现安全分析

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 06:55:26 155

原创 C++与CUDA混合编程的异构计算方案

传统C++依赖#include预处理器机制组织代码,导致编译依赖地狱、命名冲突和编译速度瓶颈三大核心问题。以数学库为例,修改math_utils.h会触发所有包含该头文件的源文件重新编译,超大规模项目构建时间可达数小时。C++20推出的模块(Modules)特性,通过编译单元隔离和显式依赖管理,为这一困局提供了系统性解决方案。// 传统方式 #include "legacy_math.h" // 模块化方式 import math.modules;模块生成预编译接口(BMI),避免重复解析头文件。

2025-09-28 06:54:55 239

原创 C++20模块化带来的编译速度革命性提升

模块化带来的编译速度提升在大型项目中尤为显著,其核心优势体现在三个维度:首先,传统头文件机制导致的重复编译问题被彻底消除,编译器通过模块依赖图智能识别变更范围,仅重编译受影响模块,避免了全量重建的耗时操作。最后,模块接口的显式声明减少了隐式依赖引发的连锁编译,例如当修改模块内部私有实现时,依赖该接口的其他模块无需重新编译,这种隔离性在金融交易系统等高频迭代场景中尤为关键。实际测试表明,采用模块化的LLVM项目编译速度提升达40%,而Qt框架的增量构建时间则从分钟级降至秒级。

2025-09-23 03:44:03 626

原创 基于C++的领域特定语言(DSL)开发实战

/ DSL定义 begin_tasks task A { /*...*/ } task B -> depends_on(A) end_tasks // 转换后的C++代码 std::vector<task> tasks = { {"A", [](){ /*...*/ }}, {"B", [](task& a){ /*...*/ }} };编译期扩展:利用模板元编程实现DSL到C++的零开销转换。MLIR多级IR:实现DSL到不同硬件目标的高效转换。1.2 实现架构对比。

2025-09-23 03:42:40 655

原创 大规模C++项目重构的技术债务偿还策略

/ 原始代码 void process(int* data, size_t len) { for (size_t i = 0;} } // 重构后代码(自动向量化) void process(int* data, size_t len) { __builtin_ia32_mm_storeu_si128(__m128i*)data, _mm_mul_ps(_mm_loadu_ps(data), _mm_set1_ps(2.0f)));

2025-09-23 03:40:34 708

原创 C++元对象协议(MOP)与运行时扩展机制

graph TD A[用户代码] --> B{编译期元编程} B -->|模板元编程| C[静态元数据生成] B -->|预处理器宏| D[反射信息嵌入] C --> E[运行时反射库] D --> E E --> F[动态类型系统] F --> G[运行时扩展接口]C++23反射提案:std::meta::reflect标准库扩展。

2025-09-23 03:39:36 655

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除