截至 2026 年 8 月,C 语言和 C++ 语言的最新正式标准及关键动态如下:
C 语言
当前最新正式标准:C23(ISO/IEC 9899:2024)
C23 于 2023 年定稿,2024 年正式发布,是 C11(2011)之后的一次重大更新。
C23 的主要新特性:
| 特性 |
说明 |
nullptr 关键字 |
替代 NULL 宏,类型安全 |
true / false 关键字 |
原生布尔字面量,不再需要 <stdbool.h> |
#elifdef / #elifndef |
简化条件编译嵌套 |
auto 类型推导 |
与 C++ 的 auto 对齐 |
constexpr |
编译期求值支持 |
typeof / typeof_unqual |
获取表达式类型(GCC 扩展转正) |
空初始化 {} |
int x = {}; 等价于 int x = 0; |
static_assert 单参数形式 |
不再强制写错误消息 |
二进制字面量 0b1010 |
直观表示二进制 |
数字分隔符 ' |
int x = 1'000'000; |
[[attributes]] 扩展 |
新增 [[deprecated]]、[[fallthrough]]、[[nodiscard]] 等 |
%wN 和 %wfN 格式说明符 |
用于 intN_t 和 floatN_t 的安全打印 |
char8_t 类型 |
UTF-8 字符类型 |
增强的 <stdckdint.h> |
溢出检查运算 |
编译器支持情况(截至 2026 年):
- GCC:自 GCC 14 起基本完整支持,GCC 15 完善
- Clang/LLVM:自 Clang 18 起大幅支持,Clang 19/20 趋于完整
- MSVC:Visual Studio 2022 17.10+ 部分支持,17.14+ 基本完整
下一版:C2y(进行中,预计 2029 年前后)
C 标准委员会(WG14)已在推进下一版标准(暂称 C2y),目前处于提案收集和讨论阶段,尚未定稿。
C++ 语言
当前最新正式标准:C++23(ISO/IEC 14882:2024)
C++23 于 2023 年定稿,2024 年正式发布,是 C++20 之后的增量更新。
C++23 的主要新特性:
| 特性 |
说明 |
std::expected<T, E> |
函数式错误处理,替代异常/optional 的不足 |
std::mdspan |
多维数组视图,科学计算友好 |
std::print / std::println |
类型安全的格式化输出,替代 printf |
std::flat_map / std::flat_set |
基于连续内存的扁平容器,缓存友好 |
std::generator<T> |
协程生成器 |
std::spanstream |
span 基础上的字符串流 |
std::stacktrace |
堆栈跟踪支持 |
std::byteswap |
字节序转换 |
std::to_underlying |
枚举转底层值的便捷函数 |
import std; |
标准库模块化导入(MSVC 优先支持) |
推导 this(Deducing this) |
简化 CRTP 和值类别重载 |
静态 operator[] |
多维下标运算符 |
if consteval |
编译期分支判断 |
单参数 static_assert |
与 C23 对齐 |
| 范围适配器扩展 |
std::views::zip、chunk、slide、adjacent 等 |
std::ranges::to<T> |
范围直接转换为容器 |
编译器支持情况(截至 2026 年):
- GCC:GCC 13 起大部分支持,GCC 14/15 完善
- Clang:Clang 16 起大部分支持,Clang 19/20 完善
- MSVC:Visual Studio 2022 17.8+ 起大部分支持,17.12+ 基本完整
下一版:C++26(进行中,预计 2026-2027 年发布)
C++26 是当前 C++ 标准委员会(WG21)正在制定的重磅版本,目前处于“功能冻结”临近阶段。以下是一些已经投票进入 C++26 草案的重要特性:
| 特性 |
说明 |
| 反射(Reflection) |
^ 操作符 + std::meta 命名空间,C++ 史上最受期待的特性之一 |
| Contracts(合约) |
前置/后置条件检查,经过多年争论终于落地 |
std::execution(Senders/Receivers) |
标准异步模型,统一 async/await/协程/线程池 |
std::hive |
高性能、稳定迭代器的容器(类似 Colony) |
std::simd |
显式 SIMD 编程接口 |
std::debugging |
调试支持库 |
| 模式匹配(Pattern Matching) |
inspect 表达式(已进入 C++26 草案,但仍有争议) |
std::inplace_vector |
栈上定容向量 |
constexpr 进一步扩展 |
更多标准库函数支持编译期计算 |
线性代数 <linalg> |
基于 mdspan 的基础线性代数 |
std::text_encoding |
Unicode 文本编码支持 |
当前状态:
- C++26 的**功能冻结(Feature Freeze)**节点原定 2025 年中,预计 2026 年底或 2027 年初正式发布
- 反射和 Contracts 是 C++26 的“头条特性”,将从根本上改变 C++ 的元编程和接口设计方式
- GCC 14+ 和 Clang 18+ 已开始实验性支持部分 C++26 特性(需
-std=c++26 和实验性头文件)
总结速查表
| 语言 |
最新正式标准 |
发布年份 |
下一版 |
预计时间 |
| C |
C23 (ISO/IEC 9899:2024) |
2024 |
C2y |
~2029 |
| C++ |
C++23 (ISO/IEC 14882:2024) |
2024 |
C++26 |
2026末–2027初 |
对 STC MCU 开发者的实际影响:
STC 常用的 Keil C51/C251 编译器主要基于 C89/C99 子集,部分支持 C11,不支持 C23。而如果使用 GCC(如 SDCC 或 PlatformIO 环境),则可以使用较新的标准。对于 STC AI 助手生成的代码,通常目标是最兼容的 C89/C99 语法,以确保在所有编译器下都能通过。