Hical 踩坑实录五部曲(二):MSVC / GCC / Clang 三平台 C++20 编译差异

Hical 踩坑实录五部曲(二):MSVC / GCC / Clang 三平台 C++20 编译差异 引言 Hical 从第一天起就要求在 GCC 14+、Clang 20+、MSVC 2022+ 三个编译器上通过 CI。框架大量使用了 C++20 新特性:Concepts、co_await 协程、PMR 内存池、std::format、__VA_OPT__ 递归宏。 三平台兼容的代价就是踩三倍的坑。 这篇文章记录了开发 Hical 过程中遇到的编译器差异踩坑——每个坑按统一结构展开:现象 → 最小复现 → 根因 → 解决方案。 目录 Hical 踩坑实录五部曲(二):MSVC / GCC / Clang 三平台 C++20 编译差异 引言 目录 坑 1:模板参数推导差异——GCC 过、MSVC 报错 坑 2:Concepts 约束检查时机差异 坑 3:__VA_OPT__ 宏展开行为差异 坑 4:PMR allocator 传播行为差异 坑 5:std::format 可用性与行为差异 坑 6:协程 promise_type 与异常处理差异 坑 7:链接顺序敏感——Windows 特有的 ws2_32 问题 经验总结:三平台兼容清单 编译器设置 C++20 特性 协程 一般性 坑 1:模板参数推导差异——GCC 过、MSVC 报错 现象:一段在 GCC 14 上完美编译的透明哈希代码,在 MSVC 上报 C2672: no matching overloaded function found。 ...

May 8, 2026 · 7 min · 1357 words

搭建 Hical HTTP 服务器 — 多平台环境搭建指南

搭建 Hical HTTP 服务器 — 多平台环境搭建指南 概述 本文档涵盖 Hical v2.0.0 在所有支持平台上的环境搭建,包括三种安装方式(vcpkg / Conan / 源码编译)和五个平台(Windows MSYS2、Windows MSVC、Ubuntu/Debian、Fedora/Arch、macOS)。 依赖要求 组件 版本要求 用途 C++ 编译器 GCC 14+ / Clang 22+ / MSVC 2022+ C++20 协程 + C++26 反射(可选) CMake >= 3.20 构建系统 Boost >= 1.70 Asio / Beast / JSON / System OpenSSL 必需 SSL/TLS 支持 Google Test 必需 单元测试 安装方式一:vcpkg(推荐) vcpkg 是最简单的安装方式,一行命令自动解决所有依赖。 安装 vcpkg(如未安装) 1 2 3 git clone https://github.com/microsoft/vcpkg.git cd vcpkg && bootstrap-vcpkg.bat # Windows cd vcpkg && ./bootstrap-vcpkg.sh # Linux / macOS 将 vcpkg 目录加入 PATH,或记住安装路径用于后续 CMAKE_TOOLCHAIN_FILE。 ...

April 22, 2026 · 5 min · 1018 words