C23 · 前置:零基础
C 速查手册
面向零基础与已有经验读者的 C23 知识点速查手册。
22 / 218 / 1060
公开章节 / 任务入口 / 关键词与别名
章节地图
入门导览
语法与类型
核心机制
标准库
工程实践
附录与索引
建议阅读路线
按任务查找
- 安全遍历数组和字符串
- 数组与字符串 · 遍历、哨兵与边界
- 安全分类和转换字符值
- 字符串、内存、字符分类与本地化 · 字符分类、大小写与合法参数
- 安全复制和检查对象表示
- 限定符、对象访问与程序行为边界 · 字符类型访问与 memcpy
- 安全更新对象
- 运算符、表达式、求值与类型转换 · 赋值、自增自减与复合赋值
- 安全计算分配字节数
- 动态内存、生命周期与所有权 · 分配大小、元素数量与溢出
- 安全使用位域而不假设位布局
- 结构体、联合、枚举、位域与类型别名 · 位域、宽度与实现边界
- 安全执行整数工具和检查算术
- 数值转换、数学、排序、查找、随机与时间 · 整数工具与检查算术
- 按参数类型选择输出格式
- 格式化输入输出、流与文件 · printf 家族与格式化输出
- 按接口名称定位库合同
- 类型、运算符、声明、头文件与术语总索引 · 标准库接口
- 按名称、分类和来源章节定位知识
- 类型、运算符、声明、头文件与术语总索引 · 索引范围与使用方法
- 按任务反查数值和时间头文件
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间接口地图
- 按任务反查信号和并发头文件
- 信号、原子操作与标准线程 · 信号、原子与线程接口地图
- 按任务选择标准库头文件
- 标准库地图、错误约定与程序控制 · 标准库头文件与任务地图
- 按元素数量读写二进制块
- 格式化输入输出、流与文件 · fread、fwrite 与二进制块读写
- 按运算符类别定位表达式规则
- 类型、运算符、声明、头文件与术语总索引 · 运算符与表达式类别
- 把 Make 目标映射为 CMake 目标
- 多文件项目、编译链接与构建系统 · CMake 目标模型入口
- 把实现假设隔离并写入接口
- 限定符、对象访问与程序行为边界 · 可移植性边界与实现假设
- 保持测试可重复且无残留
- 自动化测试、接口设计、风格与文档 · 确定性、隔离与清理
- 保存、移动或恢复文件位置
- 格式化输入输出、流与文件 · 文件位置与重新定位
- 比较字符串并查找字符或子串
- 字符串、内存、字符分类与本地化 · 比较、搜索与子串定位
- 避免把本机行为当作 ISO C 保证
- C 标准演进、特性检测与可移植性 · 常见陷阱
- 避免误读工具结果
- 警告、调试、静态分析与消毒器 · 工具边界与常见诊断陷阱
- 编写布尔条件
- 运算符、表达式、求值与类型转换 · 比较、逻辑与条件运算
- 编写第一个 C 程序
- 入门导览与第一个程序 · 第一个完整程序
- 编写多路分支
- 条件、循环与跳转 · switch、case 与 default
- 编写二路分支
- 条件、循环与跳转 · if 与 else
- 编写基本 Make 规则
- 多文件项目、编译链接与构建系统 · Make 目标、前置条件与配方
- 编写可接受空可变参数的宏
- 声明、定义、头文件与预处理器 · 可变参数宏与 C23 __VA_OPT__
- 编写可终止递归
- 函数、参数、返回值与递归 · 递归、基例与终止条件
- 编写无框架测试程序
- 自动化测试、接口设计、风格与文档 · 标准 C 最小测试夹具
- 编写有界循环
- 条件、循环与跳转 · for 循环
- 编译并解释能力探测输出
- C 标准演进、特性检测与可移植性 · 能力探测程序及输出解释
- 编译并运行 C 程序
- 入门导览与第一个程序 · 编译与运行
- 遍历二维数组
- 数组与字符串 · 多维数组与行优先布局
- 表示并检查缺失地址
- 指针、指针运算与回调 · C23 空指针
- 查看类型大小与范围
- 基本类型、对象、声明与初始化 · 大小与范围
- 查询对象大小和对齐
- 运算符、表达式、求值与类型转换 · 显式转换、大小与对齐
- 查询对象限定、存储期和链接规则
- 类型、运算符、声明、头文件与术语总索引 · 限定符、存储期与链接
- 查询和控制浮点环境
- 数值转换、数学、排序、查找、随机与时间 · 浮点环境、舍入与异常标志
- 查询或切换程序 locale
- 字符串、内存、字符分类与本地化 · locale 类别与 setlocale
- 查询行为分类和跨领域术语
- 类型、运算符、声明、头文件与术语总索引 · 行为、诊断、并发与可移植性术语
- 查询预处理指令和宏规则
- 类型、运算符、声明、头文件与术语总索引 · 预处理、宏与条件编译
- 拆分多文件声明和定义
- 多文件项目、编译链接与构建系统 · 翻译单元、声明与定义
- 初始化 C 对象
- 基本类型、对象、声明与初始化 · 初始化
- 初始化并复制聚合对象
- 结构体、联合、枚举、位域与类型别名 · 聚合初始化、指定初始化器与复制
- 处理宽字符串并分类宽字符
- 字符串、内存、字符分类与本地化 · 宽字符、宽字符串与字符分类
- 创建线程并正确汇合或分离
- 信号、原子操作与标准线程 · 标准线程能力、创建与汇合
- 从标准头和实现文档取得范围而不硬编码数据模型
- C 标准演进、特性检测与可移植性 · 翻译限制、整数范围与数据模型
- 从类型词项跳转到定义章节
- 类型、运算符、声明、头文件与术语总索引 · 基本类型、派生类型与复合类型
- 从零开始学习 C
- 入门导览与第一个程序 · 后续阅读路线
- 从头文件名跳转到对应接口地图
- 类型、运算符、声明、头文件与术语总索引 · 标准头文件
- 调用带参数函数
- 函数、参数、返回值与递归 · 调用、实参与按值传递
- 定位构建失败阶段
- 多文件项目、编译链接与构建系统 · 预处理、编译、汇编与链接
- 定义并调用回调接口
- 指针、指针运算与回调 · 函数指针与类型明确的回调
- 定义和识别结构体类型
- 结构体、联合、枚举、位域与类型别名 · 结构体类型、标签与成员
- 读取可变参数
- 函数、参数、返回值与递归 · 可变参数函数
- 读取命令行参数和环境字符串
- 标准库地图、错误约定与程序控制 · 命令行参数与环境查询
- 反查声明语法和声明符组成
- 类型、运算符、声明、头文件与术语总索引 · 声明、声明符与类型名
- 防止头文件重复包含
- 声明、定义、头文件与预处理器 · #include 与 include guard
- 分类浮点值并检查数学错误
- 数值转换、数学、排序、查找、随机与时间 · 实数数学、分类与错误报告
- 分离构建配置和产物
- 多文件项目、编译链接与构建系统 · Debug、Release 与构建配置
- 根据对象是否重叠选择内存接口
- 字符串、内存、字符分类与本地化 · 内存操作与对象重叠
- 根据目标容量选择字符串操作
- 字符串、内存、字符分类与本地化 · 长度、复制与拼接
- 根据位置判断 static 与 extern 的作用
- 作用域、链接与存储期 · static 与 extern
- 根据消息定位构建阶段
- 警告、调试、静态分析与消毒器 · 编译期与链接期诊断
- 根据执行环境调整入口和库假设
- C 标准演进、特性检测与可移植性 · hosted 与 freestanding
- 构建并链接静态库
- 多文件项目、编译链接与构建系统 · 静态库与归档工具
- 管理文件名和临时流
- 格式化输入输出、流与文件 · 文件重命名、删除与临时文件
- 管理一次初始化和每线程状态
- 信号、原子操作与标准线程 · 一次初始化与线程专用存储
- 划分多文件程序的翻译单元
- 声明、定义、头文件与预处理器 · 翻译单元与多文件程序
- 计算数组元素数量
- 数组与字符串 · 数组初始化、长度推断与 sizeof
- 计算指针区间长度
- 指针、指针运算与回调 · 指针相减与比较
- 记录接口契约和最小用法
- 自动化测试、接口设计、风格与文档 · API 注释与使用示例
- 检测受支持的未定义行为
- 警告、调试、静态分析与消毒器 · UndefinedBehaviorSanitizer 与行为边界
- 检测越界和释放后使用
- 警告、调试、静态分析与消毒器 · AddressSanitizer 与内存错误
- 检查 C 编译器
- 入门导览与第一个程序 · 工具链与命令行
- 检查库函数返回的失败信号
- 标准库地图、错误约定与程序控制 · 返回值、空指针与哨兵值
- 检查文本数值转换是否完整成功
- 数值转换、数学、排序、查找、随机与时间 · 文本数值转换与结束位置
- 检查运行时状态
- 警告、调试、静态分析与消毒器 · 变量、表达式与数据流检查
- 检查转换数量并限制输入宽度
- 格式化输入输出、流与文件 · scanf 家族与格式化输入
- 建立严格警告基线
- 警告、调试、静态分析与消毒器 · 严格警告与把警告当错误
- 控制输出缓冲并在需要时刷新
- 格式化输入输出、流与文件 · 缓冲、刷新与交互式输出
- 控制循环与跳转
- 条件、循环与跳转 · break、continue 与 goto
- 明确错误和资源责任
- 自动化测试、接口设计、风格与文档 · 状态码、所有权与缓冲区接口
- 排查表达式副作用
- 运算符、表达式、求值与类型转换 · 求值顺序与副作用
- 排查表达式未定义行为
- 运算符、表达式、求值与类型转换 · 常见陷阱
- 排查并发正确性与资源错误
- 信号、原子操作与标准线程 · 数据竞争、死锁与生命周期陷阱
- 排查陈旧产物和依赖错误
- 多文件项目、编译链接与构建系统 · 常见构建陷阱
- 排查脆弱测试和模糊接口
- 自动化测试、接口设计、风格与文档 · 常见测试与接口陷阱
- 排查错误处理和终止流程
- 标准库地图、错误约定与程序控制 · 错误处理与程序控制陷阱
- 排查动态内存错误
- 动态内存、生命周期与所有权 · 常见陷阱
- 排查对象访问错误
- 限定符、对象访问与程序行为边界 · 限定符、别名与对象访问陷阱
- 排查格式、状态与读写切换错误
- 格式化输入输出、流与文件 · 流与文件操作陷阱
- 排查函数与递归错误
- 函数、参数、返回值与递归 · 常见陷阱
- 排查宏的重复求值
- 声明、定义、头文件与预处理器 · 宏展开、括号与副作用
- 排查聚合类型错误
- 结构体、联合、枚举、位域与类型别名 · 常见陷阱
- 排查控制流错误
- 条件、循环与跳转 · 嵌套控制流与常见陷阱
- 排查类型与初始化错误
- 基本类型、对象、声明与初始化 · 常见陷阱
- 排查容量、重叠和 locale 依赖错误
- 字符串、内存、字符分类与本地化 · 字符串、内存与本地化陷阱
- 排查数值和时间接口误用
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间陷阱
- 排查数组与字符串错误
- 数组与字符串 · 常见陷阱
- 排查头文件与预处理错误
- 声明、定义、头文件与预处理器 · 重复定义、宏污染与保留标识符
- 排查未定义与重复符号
- 多文件项目、编译链接与构建系统 · 目标文件、符号与链接诊断
- 排查指针错误
- 指针、指针运算与回调 · 常见陷阱
- 排查作用域、链接与生存期错误
- 作用域、链接与存储期 · 遮蔽、链接冲突与悬空对象
- 判断 C 条件真假
- 条件、循环与跳转 · 条件表达式与真假规则
- 判断 VLA 的适用边界
- 数组与字符串 · VLA 与变长修改类型
- 判断标识符的作用域种类
- 作用域、链接与存储期 · 文件、块、函数与函数原型作用域
- 判断标识符属于哪个名字空间
- 作用域、链接与存储期 · 标识符的名字空间
- 判断表达式分组
- 运算符、表达式、求值与类型转换 · 优先级、结合性与括号
- 判断表达式结果类型
- 运算符、表达式、求值与类型转换 · 表达式、操作数与结果类型
- 判断表达式能否修改对象
- 限定符、对象访问与程序行为边界 · const 与可修改左值
- 判断递归调用是否共享状态
- 作用域、链接与存储期 · 递归、自动状态与静态状态
- 判断动态对象何时开始和结束生存期
- 动态内存、生命周期与所有权 · 动态存储与分配对象的生存期
- 判断对象的存储期
- 作用域、链接与存储期 · 自动、静态、线程与已分配存储期
- 判断多个声明是否指向同一实体
- 作用域、链接与存储期 · 无链接、内部链接与外部链接
- 判断复数和类型泛化数学是否适用
- 数值转换、数学、排序、查找、随机与时间 · 复数与类型泛化数学
- 判断何时使用异常终止
- 标准库地图、错误约定与程序控制 · 异常终止与 abort
- 判断何时需要保留 volatile 访问
- 限定符、对象访问与程序行为边界 · volatile 与可观察访问
- 判断何时引入框架和 CI
- 自动化测试、接口设计、风格与文档 · 测试框架与 CI 入口
- 判断混合算术结果类型
- 运算符、表达式、求值与类型转换 · 算术运算与常用类型转换
- 判断库接口的调用前提与失败结果
- 标准库地图、错误约定与程序控制 · 接口契约、前置条件与失败约定
- 判断流的类型、方向和当前状态
- 格式化输入输出、流与文件 · FILE、标准流与流方向
- 判断哪些布局性质可移植
- 结构体、联合、枚举、位域与类型别名 · 成员顺序、填充、对齐与偏移
- 判断柔性数组成员的声明与大小边界
- 结构体、联合、枚举、位域与类型别名 · 柔性数组成员
- 判断实现是否提供边界检查接口
- 字符串、内存、字符分类与本地化 · Annex K 边界检查接口
- 判断释放后哪些指针失效
- 动态内存、生命周期与所有权 · free、生存期结束与悬空指针
- 判断受限指针的别名约定
- 限定符、对象访问与程序行为边界 · restrict 的访问契约
- 判断数组的有效下标
- 数组与字符串 · 数组类型、元素与有效下标
- 判断文件作用域声明的定义责任
- 声明、定义、头文件与预处理器 · 外部定义与暂定定义
- 判断限定符位于哪一层类型
- 限定符、对象访问与程序行为边界 · 限定类型与限定转换
- 判断一条声明是否也是定义
- 声明、定义、头文件与预处理器 · 声明与定义
- 判断指针转换是否合法
- 指针、指针运算与回调 · 指针类型与转换
- 判断重复声明是否兼容
- 作用域、链接与存储期 · 同一实体的多次声明
- 判断字符数组是否构成有效字符串
- 字符串、内存、字符分类与本地化 · 空字符结尾字符串与数组边界
- 判断左值类型是否允许访问对象
- 限定符、对象访问与程序行为边界 · 有效类型、兼容类型与别名访问
- 区分 C11、C17、C23 的定位与迁移目标
- C 标准演进、特性检测与可移植性 · C11、C17、C23 基线地图
- 区分必需接口、条件接口和实现扩展
- C 标准演进、特性检测与可移植性 · 头文件和库接口的可移植边界
- 区分标签名、类型别名和对象名
- 结构体、联合、枚举、位域与类型别名 · typedef 与类型别名
- 区分并组合测试层次
- 自动化测试、接口设计、风格与文档 · 单元、集成与命令行测试
- 区分代码单元、执行字符集与 Unicode 转换
- 字符串、内存、字符分类与本地化 · C23 编码字符类型与 Unicode 边界
- 区分对象字节与抽象值
- 限定符、对象访问与程序行为边界 · 对象表示、值表示与填充字节
- 区分快速终止与立即终止
- 标准库地图、错误约定与程序控制 · 快速与立即终止
- 区分两类宏并判断替换结果
- 声明、定义、头文件与预处理器 · 对象式宏与函数式宏
- 区分名字与对象的四类边界
- 作用域、链接与存储期 · 作用域、链接、存储期与生存期
- 区分首元素指针与数组地址
- 指针、指针运算与回调 · 数组与指针的关系
- 区分数组与指针
- 数组与字符串 · 数组到指针的转换
- 区分文件结束和流错误
- 格式化输入输出、流与文件 · EOF、错误标志与状态清理
- 取得并解引用对象地址
- 指针、指针运算与回调 · 指针对象、地址与解引用
- 设计函数返回值
- 函数、参数、返回值与递归 · 返回值与 void 函数
- 设计可独立包含的公开头文件
- 自动化测试、接口设计、风格与文档 · 公开头文件与 API 契约
- 设计可独立包含的头文件
- 声明、定义、头文件与预处理器 · 自包含头文件与接口契约
- 设计数组参数接口
- 数组与字符串 · 数组参数与长度契约
- 设计统一且可审查的清理流程
- 动态内存、生命周期与所有权 · 清理路径与失败回滚
- 设计头文件接口边界
- 多文件项目、编译链接与构建系统 · 公开头文件与内部头文件
- 设计完整输入分类
- 自动化测试、接口设计、风格与文档 · 正常、边界与错误路径
- 设计正确的重新编译边界
- 多文件项目、编译链接与构建系统 · 头文件依赖与增量构建
- 设计指针参数接口
- 指针、指针运算与回调 · 指针参数与输出参数
- 审阅静态分析结果
- 警告、调试、静态分析与消毒器 · 静态分析与误报处理
- 声明 C 对象
- 基本类型、对象、声明与初始化 · 对象、名字与声明
- 声明并初始化原子对象
- 信号、原子操作与标准线程 · 原子能力、对象与初始化
- 声明和定义函数
- 函数、参数、返回值与递归 · 函数声明、原型与定义
- 声明可修改字符串缓冲区
- 数组与字符串 · 字符数组与字符串字面量
- 声明无参数函数
- 函数、参数、返回值与递归 · C23 参数列表
- 声明只读对象
- 基本类型、对象、声明与初始化 · const 对象
- 声明只读指针接口
- 指针、指针运算与回调 · 指针与 const 组合
- 识别 C 项目源码与构建产物
- 多文件项目、编译链接与构建系统 · 工程目录与构建产物地图
- 识别不可移植的分配边界
- 动态内存、生命周期与所有权 · 零大小请求、对齐与接口边界
- 识别对象表示相关的可移植风险
- C 标准演进、特性检测与可移植性 · 对象表示、字节序与对齐
- 识别原子对象与普通对象访问差异
- 限定符、对象访问与程序行为边界 · 原子对象的基本访问规则
- 使用比较交换并判断无锁性质
- 信号、原子操作与标准线程 · 比较交换、atomic_flag 与无锁查询
- 使用定宽整数
- 基本类型、对象、声明与初始化 · 定宽整数
- 使用显式状态转换多字节序列
- 字符串、内存、字符分类与本地化 · 多字节转换与 mbstate_t
- 使用指针区间遍历数组
- 指针、指针运算与回调 · 指针算术与单尾位置
- 缩减并记录可复现故障
- 警告、调试、静态分析与消毒器 · 崩溃信息与最小复现
- 通过中英文别名找到全部目标
- 类型、运算符、声明、头文件与术语总索引 · 中英文术语与章节交叉引用
- 统一可审阅的源码风格
- 自动化测试、接口设计、风格与文档 · 命名、格式与 const 使用
- 为 qsort 和 bsearch 编写可靠比较器
- 数值转换、数学、排序、查找、随机与时间 · 排序、查找与比较器契约
- 为故障选择诊断工具
- 警告、调试、静态分析与消毒器 · 诊断工具选择地图
- 为行为选择测试层次
- 自动化测试、接口设计、风格与文档 · C 测试策略地图
- 为原子操作选择合法内存顺序
- 信号、原子操作与标准线程 · 内存顺序与线程、信号栅栏
- 限制函数接口范围
- 函数、参数、返回值与递归 · 局部状态、static 函数与接口边界
- 写清接口的释放责任
- 动态内存、生命周期与所有权 · 持有、借用与所有权转移
- 选择分配接口并判断初始内容
- 动态内存、生命周期与所有权 · malloc、calloc 与初始状态
- 选择基本类型
- 基本类型、对象、声明与初始化 · 基本类型家族
- 选择可调试构建配置
- 警告、调试、静态分析与消毒器 · 调试信息、优化与可复现问题
- 选择时间基准并计算持续时间
- 数值转换、数学、排序、查找、随机与时间 · 处理器时间、时间基准与持续时间
- 选择文件模式并正确关闭流
- 格式化输入输出、流与文件 · 文件打开模式与流生命周期
- 选择循环结构
- 条件、循环与跳转 · while 与 do while
- 选择原子读写和读改写操作
- 信号、原子操作与标准线程 · 原子加载、存储与读改写
- 选择正常终止并注册清理函数
- 标准库地图、错误约定与程序控制 · 正常终止与退出处理函数
- 选择字符或整行输入输出接口
- 格式化输入输出、流与文件 · 字符、字符串与行输入输出
- 隐藏非公开实现细节
- 自动化测试、接口设计、风格与文档 · 内部实现与链接可见性
- 用标准宏识别翻译模式而不猜测编译器版本
- C 标准演进、特性检测与可移植性 · __STDC__ 与 __STDC_VERSION__
- 用断言检查内部不变量
- 标准库地图、错误约定与程序控制 · 断言与运行期诊断
- 用互斥量保护共享不变量
- 信号、原子操作与标准线程 · 互斥量、锁定与释放
- 用枚举表达有限状态
- 结构体、联合、枚举、位域与类型别名 · 枚举类型与枚举常量
- 用条件编译隔离实现差异
- 声明、定义、头文件与预处理器 · 条件编译与特性检测
- 在 LLDB 或 GDB 中定位控制流
- 警告、调试、静态分析与消毒器 · 断点、单步与调用栈
- 在保留原指针的前提下调整容量
- 动态内存、生命周期与所有权 · realloc 与安全扩缩容
- 在接口报告失败后检查 errno
- 标准库地图、错误约定与程序控制 · errno 与错误宏
- 在可修改字符串上控制分词状态
- 字符串、内存、字符分类与本地化 · 分词与有状态接口
- 在谓词循环中等待共享状态
- 信号、原子操作与标准线程 · 条件变量、等待循环与超时
- 在信号处理函数中只执行允许操作
- 信号、原子操作与标准线程 · 信号处理函数与可访问状态
- 在严格模式下隔离实现扩展
- C 标准演进、特性检测与可移植性 · 编译器扩展与严格一致性模式
- 找到名字开始可见的位置
- 作用域、链接与存储期 · 声明点与可见范围
- 找到实现必须记录的实现定义选择
- C 标准演进、特性检测与可移植性 · 一致性实现与实现文档
- 正确处理分配失败
- 动态内存、生命周期与所有权 · 分配失败与空指针
- 正确定位 rand 和 srand 的用途
- 数值转换、数学、排序、查找、随机与时间 · 伪随机数、种子与安全边界
- 正确分类程序行为边界
- 限定符、对象访问与程序行为边界 · 未定义、未指定与实现定义行为
- 正确解释条件特性宏的定义与未定义状态
- C 标准演进、特性检测与可移植性 · 条件特性与 __STDC_NO_*__
- 正确使用 # 与 ##
- 声明、定义、头文件与预处理器 · 字符串化与记号拼接
- 正确选择 . 与 ->
- 结构体、联合、枚举、位域与类型别名 · 成员访问与结构体指针
- 只读取判别项对应的联合体成员
- 结构体、联合、枚举、位域与类型别名 · 联合体与带标签变体
- 制定跨标准迁移和降级策略
- C 标准演进、特性检测与可移植性 · C11/C17 向 C23 迁移清单
- 注册并触发标准信号处理函数
- 信号、原子操作与标准线程 · 信号模型、注册与触发
- 转换和格式化日历时间
- 数值转换、数学、排序、查找、随机与时间 · 日历时间与分解时间
- 组合和查询位标志
- 运算符、表达式、求值与类型转换 · 位运算与移位
关键词索引
- __STDC__
- C 标准演进、特性检测与可移植性 · __STDC__ 与 __STDC_VERSION__
- __STDC_HOSTED__
- C 标准演进、特性检测与可移植性 · hosted 与 freestanding
- __STDC_LIB_EXT1__
- 字符串、内存、字符分类与本地化 · Annex K 边界检查接口
- __STDC_NO_ATOMICS__
- C 标准演进、特性检测与可移植性 · 条件特性与 __STDC_NO_*__
- __STDC_NO_THREADS__
- C 标准演进、特性检测与可移植性 · 条件特性与 __STDC_NO_*__
- __STDC_VERSION__
- C 标准演进、特性检测与可移植性 · __STDC__ 与 __STDC_VERSION__
- __STDC_WANT_LIB_EXT1__
- 字符串、内存、字符分类与本地化 · Annex K 边界检查接口
- __VA_ARGS__
- 声明、定义、头文件与预处理器 · 可变参数宏与 C23 __VA_OPT__
- __VA_OPT__
- 声明、定义、头文件与预处理器 · 可变参数宏与 C23 __VA_OPT__
- _Atomic
- 限定符、对象访问与程序行为边界 · 原子对象的基本访问规则
- _Atomic
- 信号、原子操作与标准线程 · 原子能力、对象与初始化
- _Exit
- 标准库地图、错误约定与程序控制 · 快速与立即终止
- _s 接口
- 字符串、内存、字符分类与本地化 · Annex K 边界检查接口
- ->
- 结构体、联合、枚举、位域与类型别名 · 成员访问与结构体指针
- -g
- 警告、调试、静态分析与消毒器 · 调试信息、优化与可复现问题
- -Wall
- 警告、调试、静态分析与消毒器 · 严格警告与把警告当错误
- -Werror
- 警告、调试、静态分析与消毒器 · 严格警告与把警告当错误
- -Wextra
- 警告、调试、静态分析与消毒器 · 严格警告与把警告当错误
- -Wpedantic
- 警告、调试、静态分析与消毒器 · 严格警告与把警告当错误
- .
- 结构体、联合、枚举、位域与类型别名 · 成员访问与结构体指针
- *
- 指针、指针运算与回调 · 指针对象、地址与解引用
- &
- 指针、指针运算与回调 · 指针对象、地址与解引用
- &array
- 数组与字符串 · 数组到指针的转换
- &array
- 指针、指针运算与回调 · 数组与指针的关系
- # 运算符
- 声明、定义、头文件与预处理器 · 字符串化与记号拼接
- ## 运算符
- 声明、定义、头文件与预处理器 · 字符串化与记号拼接
- #if
- 声明、定义、头文件与预处理器 · 条件编译与特性检测
- #ifdef
- 声明、定义、头文件与预处理器 · 条件编译与特性检测
- #include
- 声明、定义、头文件与预处理器 · #include 与 include guard
- <limits.h>
- C 标准演进、特性检测与可移植性 · 翻译限制、整数范围与数据模型
- <stdint.h>
- C 标准演进、特性检测与可移植性 · 翻译限制、整数范围与数据模型
- 按值传递
- 函数、参数、返回值与递归 · 调用、实参与按值传递
- 按值传递
- 指针、指针运算与回调 · 指针参数与输出参数
- 版本猜测
- C 标准演进、特性检测与可移植性 · 常见陷阱
- 版本差异
- 警告、调试、静态分析与消毒器 · 工具边界与常见诊断陷阱
- 包含指令
- 类型、运算符、声明、头文件与术语总索引 · 预处理、宏与条件编译
- 保留标识符
- 声明、定义、头文件与预处理器 · 重复定义、宏污染与保留标识符
- 保留标识符
- C 标准演进、特性检测与可移植性 · 头文件和库接口的可移植边界
- 崩溃日志
- 警告、调试、静态分析与消毒器 · 崩溃信息与最小复现
- 比较器
- 数值转换、数学、排序、查找、随机与时间 · 排序、查找与比较器契约
- 比较运算
- 运算符、表达式、求值与类型转换 · 比较、逻辑与条件运算
- 边界遍历
- 数组与字符串 · 遍历、哨兵与边界
- 边界检查
- 数组与字符串 · 遍历、哨兵与边界
- 边界值
- 自动化测试、接口设计、风格与文档 · 正常、边界与错误路径
- 编译
- 入门导览与第一个程序 · 编译与运行
- 编译
- 多文件项目、编译链接与构建系统 · 预处理、编译、汇编与链接
- 编译错误
- 警告、调试、静态分析与消毒器 · 编译期与链接期诊断
- 编译器
- 入门导览与第一个程序 · 工具链与命令行
- 编译器扩展
- C 标准演进、特性检测与可移植性 · 编译器扩展与严格一致性模式
- 编译器诊断
- 警告、调试、静态分析与消毒器 · 诊断工具选择地图
- 编译选项
- 多文件项目、编译链接与构建系统 · Debug、Release 与构建配置
- 变量
- 基本类型、对象、声明与初始化 · 对象、名字与声明
- 变体
- 结构体、联合、枚举、位域与类型别名 · 联合体与带标签变体
- 变长修改类型
- 数组与字符串 · VLA 与变长修改类型
- 标量
- 条件、循环与跳转 · 条件表达式与真假规则
- 标签
- 作用域、链接与存储期 · 标识符的名字空间
- 标签名字空间
- 作用域、链接与存储期 · 标识符的名字空间
- 标签命名空间
- 结构体、联合、枚举、位域与类型别名 · typedef 与类型别名
- 标识符
- 基本类型、对象、声明与初始化 · 对象、名字与声明
- 标识符链接
- 作用域、链接与存储期 · 无链接、内部链接与外部链接
- 标识符名字空间
- 作用域、链接与存储期 · 标识符的名字空间
- 标准基线
- C 标准演进、特性检测与可移植性 · C11、C17、C23 基线地图
- 标准库
- 标准库地图、错误约定与程序控制 · 标准库头文件与任务地图
- 标准库
- 类型、运算符、声明、头文件与术语总索引 · 标准库接口
- 标准头文件
- 标准库地图、错误约定与程序控制 · 标准库头文件与任务地图
- 标准头文件
- C 标准演进、特性检测与可移植性 · 头文件和库接口的可移植边界
- 标准头文件
- 类型、运算符、声明、头文件与术语总索引 · 标准头文件
- 标准信号
- 信号、原子操作与标准线程 · 信号模型、注册与触发
- 表达式
- 运算符、表达式、求值与类型转换 · 表达式、操作数与结果类型
- 表达式
- 类型、运算符、声明、头文件与术语总索引 · 运算符与表达式类别
- 表达式求值
- 警告、调试、静态分析与消毒器 · 变量、表达式与数据流检查
- 表达式陷阱
- 运算符、表达式、求值与类型转换 · 常见陷阱
- 别名
- 类型、运算符、声明、头文件与术语总索引 · 中英文术语与章节交叉引用
- 别名违规
- 限定符、对象访问与程序行为边界 · 限定符、别名与对象访问陷阱
- 别名约定
- 限定符、对象访问与程序行为边界 · restrict 的访问契约
- 并发
- 类型、运算符、声明、头文件与术语总索引 · 行为、诊断、并发与可移植性术语
- 并发接口
- 信号、原子操作与标准线程 · 信号、原子与线程接口地图
- 不完整类型
- 结构体、联合、枚举、位域与类型别名 · 结构体类型、标签与成员
- 不完整数组
- 结构体、联合、枚举、位域与类型别名 · 柔性数组成员
- 参数 sizeof
- 数组与字符串 · 常见陷阱
- 参数调整
- 数组与字符串 · 数组参数与长度契约
- 参数列表
- 函数、参数、返回值与递归 · C23 参数列表
- 参数声明
- 作用域、链接与存储期 · 声明点与可见范围
- 参数说明
- 自动化测试、接口设计、风格与文档 · API 注释与使用示例
- 参数误解
- 函数、参数、返回值与递归 · 常见陷阱
- 操作数
- 运算符、表达式、求值与类型转换 · 表达式、操作数与结果类型
- 测试报告
- 自动化测试、接口设计、风格与文档 · 标准 C 最小测试夹具
- 测试范围
- 自动化测试、接口设计、风格与文档 · C 测试策略地图
- 测试夹具
- 自动化测试、接口设计、风格与文档 · 标准 C 最小测试夹具
- 测试框架
- 自动化测试、接口设计、风格与文档 · 测试框架与 CI 入口
- 查询范围
- 类型、运算符、声明、头文件与术语总索引 · 索引范围与使用方法
- 常量对象
- 基本类型、对象、声明与初始化 · const 对象
- 常量指针
- 指针、指针运算与回调 · 指针与 const 组合
- 常用算术转换
- 运算符、表达式、求值与类型转换 · 算术运算与常用类型转换
- 陈旧 errno
- 标准库地图、错误约定与程序控制 · 错误处理与程序控制陷阱
- 陈旧 errno
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间陷阱
- 陈旧目标文件
- 多文件项目、编译链接与构建系统 · 常见构建陷阱
- 成员访问
- 结构体、联合、枚举、位域与类型别名 · 成员访问与结构体指针
- 成员名字空间
- 作用域、链接与存储期 · 标识符的名字空间
- 成员声明
- 结构体、联合、枚举、位域与类型别名 · 结构体类型、标签与成员
- 成员顺序
- 结构体、联合、枚举、位域与类型别名 · 成员顺序、填充、对齐与偏移
- 乘法溢出
- 动态内存、生命周期与所有权 · 分配大小、元素数量与溢出
- 初始化
- 基本类型、对象、声明与初始化 · 初始化
- 初始化器
- 基本类型、对象、声明与初始化 · 初始化
- 初始化器
- 作用域、链接与存储期 · 声明点与可见范围
- 初值
- 基本类型、对象、声明与初始化 · 初始化
- 除零
- 运算符、表达式、求值与类型转换 · 常见陷阱
- 处理函数限制
- 信号、原子操作与标准线程 · 信号处理函数与可访问状态
- 存储期
- 作用域、链接与存储期 · 作用域、链接、存储期与生存期
- 存储期
- 类型、运算符、声明、头文件与术语总索引 · 限定符、存储期与链接
- 错误 extern
- 作用域、链接与存储期 · 遮蔽、链接冲突与悬空对象
- 错误处理
- 动态内存、生命周期与所有权 · 分配失败与空指针
- 错误返回
- 标准库地图、错误约定与程序控制 · 返回值、空指针与哨兵值
- 错误路径
- 自动化测试、接口设计、风格与文档 · 正常、边界与错误路径
- 错误清理顺序
- 标准库地图、错误约定与程序控制 · 错误处理与程序控制陷阱
- 错误说明
- 自动化测试、接口设计、风格与文档 · API 注释与使用示例
- 代码格式
- 自动化测试、接口设计、风格与文档 · 命名、格式与 const 使用
- 单步
- 警告、调试、静态分析与消毒器 · 断点、单步与调用栈
- 单尾位置
- 指针、指针运算与回调 · 指针算术与单尾位置
- 单一出口
- 动态内存、生命周期与所有权 · 清理路径与失败回滚
- 单元测试
- 自动化测试、接口设计、风格与文档 · C 测试策略地图
- 单元测试
- 自动化测试、接口设计、风格与文档 · 单元、集成与命令行测试
- 当前存储成员
- 结构体、联合、枚举、位域与类型别名 · 联合体与带标签变体
- 地址
- 指针、指针运算与回调 · 指针对象、地址与解引用
- 地址实参
- 指针、指针运算与回调 · 指针参数与输出参数
- 等价类
- 自动化测试、接口设计、风格与文档 · 正常、边界与错误路径
- 递归
- 函数、参数、返回值与递归 · 递归、基例与终止条件
- 递归
- 作用域、链接与存储期 · 递归、自动状态与静态状态
- 递归错误
- 函数、参数、返回值与递归 · 常见陷阱
- 调试器
- 警告、调试、静态分析与消毒器 · 诊断工具选择地图
- 调用前置条件
- 指针、指针运算与回调 · 指针参数与输出参数
- 调用栈
- 警告、调试、静态分析与消毒器 · 断点、单步与调用栈
- 迭代表达式
- 条件、循环与跳转 · for 循环
- 定宽整数
- 基本类型、对象、声明与初始化 · 定宽整数
- 定义
- 声明、定义、头文件与预处理器 · 声明与定义
- 定义
- 多文件项目、编译链接与构建系统 · 翻译单元、声明与定义
- 定义
- 类型、运算符、声明、头文件与术语总索引 · 声明、声明符与类型名
- 丢弃限定符
- 限定符、对象访问与程序行为边界 · 限定符、别名与对象访问陷阱
- 丢失原指针
- 动态内存、生命周期与所有权 · 常见陷阱
- 动态存储期
- 动态内存、生命周期与所有权 · 动态存储与分配对象的生存期
- 读改写
- 信号、原子操作与标准线程 · 原子加载、存储与读改写
- 短路求值
- 运算符、表达式、求值与类型转换 · 比较、逻辑与条件运算
- 断点
- 警告、调试、静态分析与消毒器 · 断点、单步与调用栈
- 断言
- 自动化测试、接口设计、风格与文档 · 标准 C 最小测试夹具
- 堆栈跟踪
- 警告、调试、静态分析与消毒器 · AddressSanitizer 与内存错误
- 对齐
- 运算符、表达式、求值与类型转换 · 显式转换、大小与对齐
- 对齐
- 结构体、联合、枚举、位域与类型别名 · 成员顺序、填充、对齐与偏移
- 对齐
- 限定符、对象访问与程序行为边界 · 可移植性边界与实现假设
- 对齐
- C 标准演进、特性检测与可移植性 · 对象表示、字节序与对齐
- 对齐要求
- 动态内存、生命周期与所有权 · 零大小请求、对齐与接口边界
- 对象
- 基本类型、对象、声明与初始化 · 对象、名字与声明
- 对象表示
- 限定符、对象访问与程序行为边界 · 对象表示、值表示与填充字节
- 对象表示
- C 标准演进、特性检测与可移植性 · 对象表示、字节序与对齐
- 对象定义
- 声明、定义、头文件与预处理器 · 声明与定义
- 对象复制
- 限定符、对象访问与程序行为边界 · 字符类型访问与 memcpy
- 对象生存期
- 动态内存、生命周期与所有权 · 动态存储与分配对象的生存期
- 对象式宏
- 声明、定义、头文件与预处理器 · 对象式宏与函数式宏
- 对象重叠
- 字符串、内存、字符分类与本地化 · 字符串、内存与本地化陷阱
- 多次声明
- 作用域、链接与存储期 · 同一实体的多次声明
- 多目标链接
- 类型、运算符、声明、头文件与术语总索引 · 中英文术语与章节交叉引用
- 多维数组
- 数组与字符串 · 多维数组与行优先布局
- 多文件程序
- 声明、定义、头文件与预处理器 · 翻译单元与多文件程序
- 二进制布局假设
- 结构体、联合、枚举、位域与类型别名 · 常见陷阱
- 二进制流
- 格式化输入输出、流与文件 · 文件打开模式与流生命周期
- 二进制数据
- 格式化输入输出、流与文件 · fread、fwrite 与二进制块读写
- 翻译单元
- 声明、定义、头文件与预处理器 · 翻译单元与多文件程序
- 翻译单元
- 多文件项目、编译链接与构建系统 · 翻译单元、声明与定义
- 翻译模式
- C 标准演进、特性检测与可移植性 · __STDC__ 与 __STDC_VERSION__
- 翻译限制
- C 标准演进、特性检测与可移植性 · 翻译限制、整数范围与数据模型
- 返回值
- 函数、参数、返回值与递归 · 返回值与 void 函数
- 返回值
- 标准库地图、错误约定与程序控制 · 返回值、空指针与哨兵值
- 返回值检查
- 动态内存、生命周期与所有权 · 分配失败与空指针
- 范围
- 指针、指针运算与回调 · 指针算术与单尾位置
- 非法算术
- 指针、指针运算与回调 · 常见陷阱
- 分隔符
- 字符串、内存、字符分类与本地化 · 分词与有状态接口
- 分配大小
- 动态内存、生命周期与所有权 · 分配大小、元素数量与溢出
- 分配对象
- 动态内存、生命周期与所有权 · 动态存储与分配对象的生存期
- 分配失败
- 动态内存、生命周期与所有权 · 分配失败与空指针
- 分支
- 条件、循环与跳转 · if 与 else
- 浮点错误
- 数值转换、数学、排序、查找、随机与时间 · 实数数学、分类与错误报告
- 浮点类型
- 基本类型、对象、声明与初始化 · 基本类型家族
- 浮点异常
- 数值转换、数学、排序、查找、随机与时间 · 浮点环境、舍入与异常标志
- 符号
- 多文件项目、编译链接与构建系统 · 目标文件、符号与链接诊断
- 符号可见性
- 自动化测试、接口设计、风格与文档 · 内部实现与链接可见性
- 复合赋值
- 运算符、表达式、求值与类型转换 · 赋值、自增自减与复合赋值
- 复合类型
- 作用域、链接与存储期 · 同一实体的多次声明
- 复合类型
- 类型、运算符、声明、头文件与术语总索引 · 基本类型、派生类型与复合类型
- 复数
- 数值转换、数学、排序、查找、随机与时间 · 复数与类型泛化数学
- 副作用
- 运算符、表达式、求值与类型转换 · 求值顺序与副作用
- 副作用
- 声明、定义、头文件与预处理器 · 宏展开、括号与副作用
- 赋值
- 运算符、表达式、求值与类型转换 · 赋值、自增自减与复合赋值
- 覆盖率
- 自动化测试、接口设计、风格与文档 · 测试框架与 CI 入口
- 格式不匹配
- 格式化输入输出、流与文件 · 流与文件操作陷阱
- 格式说明符
- 基本类型、对象、声明与初始化 · 常见陷阱
- 格式字符串
- 格式化输入输出、流与文件 · printf 家族与格式化输出
- 隔离
- 自动化测试、接口设计、风格与文档 · 确定性、隔离与清理
- 工程目录
- 多文件项目、编译链接与构建系统 · 工程目录与构建产物地图
- 工具缺失
- 警告、调试、静态分析与消毒器 · 工具边界与常见诊断陷阱
- 公开头文件
- 多文件项目、编译链接与构建系统 · 公开头文件与内部头文件
- 共享状态
- 作用域、链接与存储期 · 递归、自动状态与静态状态
- 共享状态
- 自动化测试、接口设计、风格与文档 · 常见测试与接口陷阱
- 构建目录
- 多文件项目、编译链接与构建系统 · 工程目录与构建产物地图
- 固定底层类型
- 结构体、联合、枚举、位域与类型别名 · 枚举类型与枚举常量
- 固定输入
- 警告、调试、静态分析与消毒器 · 崩溃信息与最小复现
- 固定数据模型
- C 标准演进、特性检测与可移植性 · 常见陷阱
- 贯穿
- 条件、循环与跳转 · switch、case 与 default
- 归档
- 多文件项目、编译链接与构建系统 · 静态库与归档工具
- 规则配置
- 警告、调试、静态分析与消毒器 · 静态分析与误报处理
- 过早销毁
- 信号、原子操作与标准线程 · 数据竞争、死锁与生命周期陷阱
- 函数调用
- 函数、参数、返回值与递归 · 调用、实参与按值传递
- 函数定义
- 函数、参数、返回值与递归 · 函数声明、原型与定义
- 函数定义
- 声明、定义、头文件与预处理器 · 声明与定义
- 函数接口
- 类型、运算符、声明、头文件与术语总索引 · 标准库接口
- 函数声明
- 函数、参数、返回值与递归 · 函数声明、原型与定义
- 函数式宏
- 声明、定义、头文件与预处理器 · 对象式宏与函数式宏
- 函数陷阱
- 函数、参数、返回值与递归 · 常见陷阱
- 函数原型
- 函数、参数、返回值与递归 · 函数声明、原型与定义
- 函数原型作用域
- 作用域、链接与存储期 · 文件、块、函数与函数原型作用域
- 函数指针
- 指针、指针运算与回调 · 函数指针与类型明确的回调
- 函数作用域
- 作用域、链接与存储期 · 文件、块、函数与函数原型作用域
- 宏
- 类型、运算符、声明、头文件与术语总索引 · 预处理、宏与条件编译
- 宏参数
- 声明、定义、头文件与预处理器 · 对象式宏与函数式宏
- 宏接口
- 类型、运算符、声明、头文件与术语总索引 · 标准库接口
- 宏污染
- 声明、定义、头文件与预处理器 · 重复定义、宏污染与保留标识符
- 宏展开
- 声明、定义、头文件与预处理器 · 宏展开、括号与副作用
- 宏自洽
- C 标准演进、特性检测与可移植性 · 能力探测程序及输出解释
- 后测循环
- 条件、循环与跳转 · while 与 do while
- 后置条件
- 自动化测试、接口设计、风格与文档 · 公开头文件与 API 契约
- 忽略返回值
- 标准库地图、错误约定与程序控制 · 错误处理与程序控制陷阱
- 互斥量
- 信号、原子操作与标准线程 · 互斥量、锁定与释放
- 环境变量
- 标准库地图、错误约定与程序控制 · 命令行参数与环境查询
- 环境记录
- 警告、调试、静态分析与消毒器 · 崩溃信息与最小复现
- 缓冲模式
- 格式化输入输出、流与文件 · 缓冲、刷新与交互式输出
- 缓冲区容量
- 字符串、内存、字符分类与本地化 · 空字符结尾字符串与数组边界
- 缓冲区越界
- 字符串、内存、字符分类与本地化 · 字符串、内存与本地化陷阱
- 缓冲区长度
- 自动化测试、接口设计、风格与文档 · 状态码、所有权与缓冲区接口
- 回调
- 指针、指针运算与回调 · 函数指针与类型明确的回调
- 汇编
- 多文件项目、编译链接与构建系统 · 预处理、编译、汇编与链接
- 基本类型
- 基本类型、对象、声明与初始化 · 基本类型家族
- 基本类型
- 类型、运算符、声明、头文件与术语总索引 · 基本类型、派生类型与复合类型
- 基例
- 函数、参数、返回值与递归 · 递归、基例与终止条件
- 基于对象
- 限定符、对象访问与程序行为边界 · restrict 的访问契约
- 集成测试
- 自动化测试、接口设计、风格与文档 · C 测试策略地图
- 集成测试
- 自动化测试、接口设计、风格与文档 · 单元、集成与命令行测试
- 计数循环
- 条件、循环与跳转 · for 循环
- 记号拼接
- 声明、定义、头文件与预处理器 · 字符串化与记号拼接
- 兼容类型
- 作用域、链接与存储期 · 同一实体的多次声明
- 兼容类型
- 限定符、对象访问与程序行为边界 · 有效类型、兼容类型与别名访问
- 兼容指针
- 指针、指针运算与回调 · 指针类型与转换
- 监视点
- 警告、调试、静态分析与消毒器 · 变量、表达式与数据流检查
- 降级路径
- C 标准演进、特性检测与可移植性 · C11/C17 向 C23 迁移清单
- 交叉引用
- 类型、运算符、声明、头文件与术语总索引 · 中英文术语与章节交叉引用
- 交互式输出
- 格式化输入输出、流与文件 · 缓冲、刷新与交互式输出
- 接口边界
- 动态内存、生命周期与所有权 · 零大小请求、对齐与接口边界
- 接口边界
- 多文件项目、编译链接与构建系统 · 公开头文件与内部头文件
- 接口契约
- 标准库地图、错误约定与程序控制 · 接口契约、前置条件与失败约定
- 接口声明
- 声明、定义、头文件与预处理器 · 自包含头文件与接口契约
- 结构化输出
- C 标准演进、特性检测与可移植性 · 能力探测程序及输出解释
- 结构体标签
- 结构体、联合、枚举、位域与类型别名 · 结构体类型、标签与成员
- 结构体赋值
- 结构体、联合、枚举、位域与类型别名 · 聚合初始化、指定初始化器与复制
- 结构体类型
- 结构体、联合、枚举、位域与类型别名 · 结构体类型、标签与成员
- 结构体指针
- 结构体、联合、枚举、位域与类型别名 · 成员访问与结构体指针
- 结果类型
- 运算符、表达式、求值与类型转换 · 表达式、操作数与结果类型
- 结合性
- 运算符、表达式、求值与类型转换 · 优先级、结合性与括号
- 结合性
- 类型、运算符、声明、头文件与术语总索引 · 运算符与表达式类别
- 借用
- 自动化测试、接口设计、风格与文档 · 状态码、所有权与缓冲区接口
- 借用指针
- 动态内存、生命周期与所有权 · 持有、借用与所有权转移
- 进程状态
- 自动化测试、接口设计、风格与文档 · 单元、集成与命令行测试
- 静态存储期
- 作用域、链接与存储期 · 自动、静态、线程与已分配存储期
- 静态分析
- 警告、调试、静态分析与消毒器 · 诊断工具选择地图
- 静态分析
- 警告、调试、静态分析与消毒器 · 静态分析与误报处理
- 静态局部对象
- 作用域、链接与存储期 · 递归、自动状态与静态状态
- 静态库
- 多文件项目、编译链接与构建系统 · 静态库与归档工具
- 局部变量
- 警告、调试、静态分析与消毒器 · 变量、表达式与数据流检查
- 局部对象
- 函数、参数、返回值与递归 · 局部状态、static 函数与接口边界
- 矩阵
- 数组与字符串 · 多维数组与行优先布局
- 聚合初始化
- 结构体、联合、枚举、位域与类型别名 · 聚合初始化、指定初始化器与复制
- 可变参数
- 函数、参数、返回值与递归 · 可变参数函数
- 可变参数宏
- 声明、定义、头文件与预处理器 · 可变参数宏与 C23 __VA_OPT__
- 可调用接口
- 指针、指针运算与回调 · 函数指针与类型明确的回调
- 可复现构建
- 警告、调试、静态分析与消毒器 · 调试信息、优化与可复现问题
- 可观察行为
- 限定符、对象访问与程序行为边界 · volatile 与可观察访问
- 可见范围
- 作用域、链接与存储期 · 声明点与可见范围
- 可修改左值
- 限定符、对象访问与程序行为边界 · const 与可修改左值
- 可选支持
- C 标准演进、特性检测与可移植性 · 条件特性与 __STDC_NO_*__
- 可移植性
- 限定符、对象访问与程序行为边界 · 可移植性边界与实现假设
- 可移植性
- 类型、运算符、声明、头文件与术语总索引 · 行为、诊断、并发与可移植性术语
- 可执行文件
- 入门导览与第一个程序 · 编译与运行
- 空参数
- 声明、定义、头文件与预处理器 · 可变参数宏与 C23 __VA_OPT__
- 空参数列表
- 函数、参数、返回值与递归 · C23 参数列表
- 空指针
- 指针、指针运算与回调 · C23 空指针
- 空指针
- 动态内存、生命周期与所有权 · 分配失败与空指针
- 空指针
- 标准库地图、错误约定与程序控制 · 返回值、空指针与哨兵值
- 空指针解引用
- 指针、指针运算与回调 · 常见陷阱
- 空字符
- 数组与字符串 · 字符数组与字符串字面量
- 空字符
- 字符串、内存、字符分类与本地化 · 空字符结尾字符串与数组边界
- 控制流陷阱
- 条件、循环与跳转 · 嵌套控制流与常见陷阱
- 库函数
- 标准库地图、错误约定与程序控制 · 标准库头文件与任务地图
- 库宏
- 标准库地图、错误约定与程序控制 · 标准库头文件与任务地图
- 库兼容
- C 标准演进、特性检测与可移植性 · C11/C17 向 C23 迁移清单
- 库接口
- C 标准演进、特性检测与可移植性 · 头文件和库接口的可移植边界
- 块作用域
- 作用域、链接与存储期 · 文件、块、函数与函数原型作用域
- 快速终止
- 标准库地图、错误约定与程序控制 · 快速与立即终止
- 扩容
- 动态内存、生命周期与所有权 · realloc 与安全扩缩容
- 扩展依赖
- C 标准演进、特性检测与可移植性 · 常见陷阱
- 括号
- 运算符、表达式、求值与类型转换 · 优先级、结合性与括号
- 括号
- 声明、定义、头文件与预处理器 · 宏展开、括号与副作用
- 类型别名
- 结构体、联合、枚举、位域与类型别名 · typedef 与类型别名
- 类型大小
- 基本类型、对象、声明与初始化 · 大小与范围
- 类型泛化
- 数值转换、数学、排序、查找、随机与时间 · 复数与类型泛化数学
- 类型兼容
- 类型、运算符、声明、头文件与术语总索引 · 基本类型、派生类型与复合类型
- 类型接口
- 类型、运算符、声明、头文件与术语总索引 · 标准库接口
- 类型名
- 类型、运算符、声明、头文件与术语总索引 · 声明、声明符与类型名
- 类型限定符
- 限定符、对象访问与程序行为边界 · 限定类型与限定转换
- 类型限定符
- 类型、运算符、声明、头文件与术语总索引 · 限定符、存储期与链接
- 类型陷阱
- 基本类型、对象、声明与初始化 · 常见陷阱
- 联合体
- 结构体、联合、枚举、位域与类型别名 · 联合体与带标签变体
- 联合体误读
- 结构体、联合、枚举、位域与类型别名 · 常见陷阱
- 链接
- 作用域、链接与存储期 · 作用域、链接、存储期与生存期
- 链接
- 多文件项目、编译链接与构建系统 · 预处理、编译、汇编与链接
- 链接
- 类型、运算符、声明、头文件与术语总索引 · 限定符、存储期与链接
- 链接冲突
- 作用域、链接与存储期 · 遮蔽、链接冲突与悬空对象
- 链接错误
- 警告、调试、静态分析与消毒器 · 编译期与链接期诊断
- 链接顺序
- 多文件项目、编译链接与构建系统 · 静态库与归档工具
- 链接顺序
- 多文件项目、编译链接与构建系统 · 常见构建陷阱
- 列数
- 数组与字符串 · 多维数组与行优先布局
- 临时目录
- 自动化测试、接口设计、风格与文档 · 确定性、隔离与清理
- 临时文件
- 格式化输入输出、流与文件 · 文件重命名、删除与临时文件
- 临时指针
- 动态内存、生命周期与所有权 · realloc 与安全扩缩容
- 零初始化
- 声明、定义、头文件与预处理器 · 外部定义与暂定定义
- 零大小分配
- 动态内存、生命周期与所有权 · 零大小请求、对齐与接口边界
- 零填充
- 数组与字符串 · 数组初始化、长度推断与 sizeof
- 零填充
- 动态内存、生命周期与所有权 · malloc、calloc 与初始状态
- 零与非零
- 条件、循环与跳转 · 条件表达式与真假规则
- 逻辑运算
- 运算符、表达式、求值与类型转换 · 比较、逻辑与条件运算
- 枚举常量
- 结构体、联合、枚举、位域与类型别名 · 枚举类型与枚举常量
- 枚举类型
- 结构体、联合、枚举、位域与类型别名 · 枚举类型与枚举常量
- 名字遮蔽
- 作用域、链接与存储期 · 遮蔽、链接冲突与悬空对象
- 命名规则
- 自动化测试、接口设计、风格与文档 · 命名、格式与 const 使用
- 目标
- 多文件项目、编译链接与构建系统 · Make 目标、前置条件与配方
- 目标文件
- 多文件项目、编译链接与构建系统 · 目标文件、符号与链接诊断
- 内部链接
- 函数、参数、返回值与递归 · 局部状态、static 函数与接口边界
- 内部链接
- 作用域、链接与存储期 · 无链接、内部链接与外部链接
- 内部链接
- 作用域、链接与存储期 · static 与 extern
- 内部链接
- 自动化测试、接口设计、风格与文档 · 内部实现与链接可见性
- 内部头文件
- 多文件项目、编译链接与构建系统 · 公开头文件与内部头文件
- 内部状态
- 字符串、内存、字符分类与本地化 · 分词与有状态接口
- 内存检查
- 警告、调试、静态分析与消毒器 · 变量、表达式与数据流检查
- 内存泄漏
- 动态内存、生命周期与所有权 · 常见陷阱
- 能力矩阵
- C 标准演进、特性检测与可移植性 · 能力探测程序及输出解释
- 派生类型
- 类型、运算符、声明、头文件与术语总索引 · 基本类型、派生类型与复合类型
- 派生视图
- 类型、运算符、声明、头文件与术语总索引 · 索引范围与使用方法
- 判别项
- 结构体、联合、枚举、位域与类型别名 · 联合体与带标签变体
- 配方
- 多文件项目、编译链接与构建系统 · Make 目标、前置条件与配方
- 迁移清单
- C 标准演进、特性检测与可移植性 · C11/C17 向 C23 迁移清单
- 前测循环
- 条件、循环与跳转 · while 与 do while
- 前置条件
- 数组与字符串 · 数组参数与长度契约
- 前置条件
- 标准库地图、错误约定与程序控制 · 接口契约、前置条件与失败约定
- 前置条件
- 多文件项目、编译链接与构建系统 · Make 目标、前置条件与配方
- 前置条件
- 自动化测试、接口设计、风格与文档 · 公开头文件与 API 契约
- 浅复制
- 结构体、联合、枚举、位域与类型别名 · 聚合初始化、指定初始化器与复制
- 嵌套循环
- 条件、循环与跳转 · 嵌套控制流与常见陷阱
- 清理路径
- 动态内存、生命周期与所有权 · 清理路径与失败回滚
- 求值顺序
- 运算符、表达式、求值与类型转换 · 求值顺序与副作用
- 区间长度
- 指针、指针运算与回调 · 指针相减与比较
- 全局状态
- 字符串、内存、字符分类与本地化 · locale 类别与 setlocale
- 全量重建
- 多文件项目、编译链接与构建系统 · 常见构建陷阱
- 缺少空终止
- 字符串、内存、字符分类与本地化 · 字符串、内存与本地化陷阱
- 缺少终止符
- 数组与字符串 · 常见陷阱
- 缺失依赖
- 多文件项目、编译链接与构建系统 · 常见构建陷阱
- 确定性
- 自动化测试、接口设计、风格与文档 · 确定性、隔离与清理
- 柔性数组成员
- 结构体、联合、枚举、位域与类型别名 · 柔性数组成员
- 入门路线
- 入门导览与第一个程序 · 后续阅读路线
- 哨兵值
- 标准库地图、错误约定与程序控制 · 返回值、空指针与哨兵值
- 舍入方向
- 数值转换、数学、排序、查找、随机与时间 · 浮点环境、舍入与异常标志
- 生存期
- 作用域、链接与存储期 · 作用域、链接、存储期与生存期
- 生存期结束
- 动态内存、生命周期与所有权 · free、生存期结束与悬空指针
- 声明
- 基本类型、对象、声明与初始化 · 对象、名字与声明
- 声明
- 声明、定义、头文件与预处理器 · 声明与定义
- 声明
- 多文件项目、编译链接与构建系统 · 翻译单元、声明与定义
- 声明
- 类型、运算符、声明、头文件与术语总索引 · 声明、声明符与类型名
- 声明点
- 作用域、链接与存储期 · 声明点与可见范围
- 声明符
- 类型、运算符、声明、头文件与术语总索引 · 声明、声明符与类型名
- 声明可读性
- 结构体、联合、枚举、位域与类型别名 · typedef 与类型别名
- 声明可见性
- 类型、运算符、声明、头文件与术语总索引 · 标准头文件
- 失败回滚
- 动态内存、生命周期与所有权 · 清理路径与失败回滚
- 失败计数
- 自动化测试、接口设计、风格与文档 · 标准 C 最小测试夹具
- 失败约定
- 标准库地图、错误约定与程序控制 · 接口契约、前置条件与失败约定
- 时区误解
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间陷阱
- 实参
- 函数、参数、返回值与递归 · 调用、实参与按值传递
- 实现定义
- C 标准演进、特性检测与可移植性 · 一致性实现与实现文档
- 实现定义布局
- 结构体、联合、枚举、位域与类型别名 · 位域、宽度与实现边界
- 实现定义行为
- 限定符、对象访问与程序行为边界 · 未定义、未指定与实现定义行为
- 实现宏
- C 标准演进、特性检测与可移植性 · 编译器扩展与严格一致性模式
- 实现假设
- 限定符、对象访问与程序行为边界 · 可移植性边界与实现假设
- 实现耦合
- 自动化测试、接口设计、风格与文档 · 常见测试与接口陷阱
- 实现文档
- C 标准演进、特性检测与可移植性 · 一致性实现与实现文档
- 使用示例
- 自动化测试、接口设计、风格与文档 · API 注释与使用示例
- 释放后使用
- 动态内存、生命周期与所有权 · 常见陷阱
- 释放后使用
- 警告、调试、静态分析与消毒器 · AddressSanitizer 与内存错误
- 释放责任
- 动态内存、生命周期与所有权 · 持有、借用与所有权转移
- 首元素指针
- 数组与字符串 · 数组到指针的转换
- 首元素指针
- 指针、指针运算与回调 · 数组与指针的关系
- 输出参数
- 指针、指针运算与回调 · 指针参数与输出参数
- 输出目录
- 多文件项目、编译链接与构建系统 · Debug、Release 与构建配置
- 数据竞争
- 限定符、对象访问与程序行为边界 · 原子对象的基本访问规则
- 数据竞争
- 信号、原子操作与标准线程 · 数据竞争、死锁与生命周期陷阱
- 数据流分析
- 警告、调试、静态分析与消毒器 · 静态分析与误报处理
- 数据模型
- C 标准演进、特性检测与可移植性 · 翻译限制、整数范围与数据模型
- 数值范围
- 基本类型、对象、声明与初始化 · 大小与范围
- 数组边界
- 数组与字符串 · 数组类型、元素与有效下标
- 数组初始化器
- 数组与字符串 · 数组初始化、长度推断与 sizeof
- 数组类型
- 数组与字符串 · 数组类型、元素与有效下标
- 数组陷阱
- 数组与字符串 · 常见陷阱
- 数组元素
- 数组与字符串 · 数组类型、元素与有效下标
- 数组长度
- 数组与字符串 · 数组初始化、长度推断与 sizeof
- 数组转换
- 数组与字符串 · 数组到指针的转换
- 数组转换
- 指针、指针运算与回调 · 数组与指针的关系
- 私有声明
- 自动化测试、接口设计、风格与文档 · 内部实现与链接可见性
- 死锁
- 信号、原子操作与标准线程 · 数据竞争、死锁与生命周期陷阱
- 宿主实现
- C 标准演进、特性检测与可移植性 · hosted 与 freestanding
- 随机误用
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间陷阱
- 缩容
- 动态内存、生命周期与所有权 · realloc 与安全扩缩容
- 所有权
- 自动化测试、接口设计、风格与文档 · 状态码、所有权与缓冲区接口
- 所有权约定
- 动态内存、生命周期与所有权 · 持有、借用与所有权转移
- 所有权转移
- 动态内存、生命周期与所有权 · 持有、借用与所有权转移
- 特性检测
- 声明、定义、头文件与预处理器 · 条件编译与特性检测
- 替换列表
- 声明、定义、头文件与预处理器 · 对象式宏与函数式宏
- 填充
- 结构体、联合、枚举、位域与类型别名 · 成员顺序、填充、对齐与偏移
- 填充位
- C 标准演进、特性检测与可移植性 · 对象表示、字节序与对齐
- 填充字节
- 限定符、对象访问与程序行为边界 · 对象表示、值表示与填充字节
- 条件包含
- 声明、定义、头文件与预处理器 · #include 与 include guard
- 条件编译
- 声明、定义、头文件与预处理器 · 条件编译与特性检测
- 条件编译
- 类型、运算符、声明、头文件与术语总索引 · 预处理、宏与条件编译
- 条件表达式
- 条件、循环与跳转 · 条件表达式与真假规则
- 条件分支
- 条件、循环与跳转 · if 与 else
- 条件特性
- 信号、原子操作与标准线程 · 原子能力、对象与初始化
- 条件特性
- C 标准演进、特性检测与可移植性 · 条件特性与 __STDC_NO_*__
- 条件头文件
- 类型、运算符、声明、头文件与术语总索引 · 标准头文件
- 条件运算符
- 运算符、表达式、求值与类型转换 · 比较、逻辑与条件运算
- 条件支持
- C 标准演进、特性检测与可移植性 · 头文件和库接口的可移植边界
- 跳转语句
- 条件、循环与跳转 · break、continue 与 goto
- 同一实体
- 作用域、链接与存储期 · 同一实体的多次声明
- 同一数组
- 指针、指针运算与回调 · 指针算术与单尾位置
- 同一数组
- 指针、指针运算与回调 · 指针相减与比较
- 头文件
- 声明、定义、头文件与预处理器 · 自包含头文件与接口契约
- 头文件
- 多文件项目、编译链接与构建系统 · 工程目录与构建产物地图
- 头文件地图
- 类型、运算符、声明、头文件与术语总索引 · 标准头文件
- 头文件定义
- 声明、定义、头文件与预处理器 · 重复定义、宏污染与保留标识符
- 头文件依赖
- 多文件项目、编译链接与构建系统 · 头文件依赖与增量构建
- 外部定义
- 声明、定义、头文件与预处理器 · 外部定义与暂定定义
- 外部定义
- 多文件项目、编译链接与构建系统 · 翻译单元、声明与定义
- 外部链接
- 作用域、链接与存储期 · 无链接、内部链接与外部链接
- 外部声明
- 作用域、链接与存储期 · static 与 extern
- 完整类型
- 声明、定义、头文件与预处理器 · 自包含头文件与接口契约
- 伪能力检测
- C 标准演进、特性检测与可移植性 · 常见陷阱
- 伪随机
- 数值转换、数学、排序、查找、随机与时间 · 伪随机数、种子与安全边界
- 尾部存储
- 结构体、联合、枚举、位域与类型别名 · 柔性数组成员
- 未初始化存储
- 动态内存、生命周期与所有权 · malloc、calloc 与初始状态
- 未初始化读取
- 基本类型、对象、声明与初始化 · 常见陷阱
- 未初始化填充
- 结构体、联合、枚举、位域与类型别名 · 常见陷阱
- 未初始化指针
- 指针、指针运算与回调 · 常见陷阱
- 未定义行为
- 限定符、对象访问与程序行为边界 · restrict 的访问契约
- 未定义行为
- 限定符、对象访问与程序行为边界 · 未定义、未指定与实现定义行为
- 未定义行为
- 标准库地图、错误约定与程序控制 · 接口契约、前置条件与失败约定
- 未定义行为
- 警告、调试、静态分析与消毒器 · UndefinedBehaviorSanitizer 与行为边界
- 未定义行为
- 类型、运算符、声明、头文件与术语总索引 · 行为、诊断、并发与可移植性术语
- 未定义引用
- 多文件项目、编译链接与构建系统 · 目标文件、符号与链接诊断
- 未检查 scanf
- 格式化输入输出、流与文件 · 流与文件操作陷阱
- 未排序
- 运算符、表达式、求值与类型转换 · 求值顺序与副作用
- 未刷新流
- 标准库地图、错误约定与程序控制 · 错误处理与程序控制陷阱
- 未指定行为
- 限定符、对象访问与程序行为边界 · 未定义、未指定与实现定义行为
- 位掩码
- 运算符、表达式、求值与类型转换 · 位运算与移位
- 位域
- 结构体、联合、枚举、位域与类型别名 · 位域、宽度与实现边界
- 位域地址
- 结构体、联合、枚举、位域与类型别名 · 常见陷阱
- 位域宽度
- 结构体、联合、枚举、位域与类型别名 · 位域、宽度与实现边界
- 位运算
- 运算符、表达式、求值与类型转换 · 位运算与移位
- 文本二进制差异
- 格式化输入输出、流与文件 · 流与文件操作陷阱
- 文本流
- 格式化输入输出、流与文件 · 文件打开模式与流生命周期
- 文件作用域
- 作用域、链接与存储期 · 文件、块、函数与函数原型作用域
- 文件作用域
- 声明、定义、头文件与预处理器 · 外部定义与暂定定义
- 稳定链接
- 类型、运算符、声明、头文件与术语总索引 · 索引范围与使用方法
- 无符号位域
- 结构体、联合、枚举、位域与类型别名 · 位域、宽度与实现边界
- 无链接
- 作用域、链接与存储期 · 无链接、内部链接与外部链接
- 无限循环
- 条件、循环与跳转 · 嵌套控制流与常见陷阱
- 无效指针
- 动态内存、生命周期与所有权 · free、生存期结束与悬空指针
- 误报
- 警告、调试、静态分析与消毒器 · 静态分析与误报处理
- 下标
- 数组与字符串 · 数组类型、元素与有效下标
- 显式长度
- 数组与字符串 · 数组参数与长度契约
- 显式长度
- 数组与字符串 · 遍历、哨兵与边界
- 显式转换
- 运算符、表达式、求值与类型转换 · 显式转换、大小与对齐
- 显式转换
- 指针、指针运算与回调 · 指针类型与转换
- 线程存储期
- 作用域、链接与存储期 · 自动、静态、线程与已分配存储期
- 线程存储期
- 类型、运算符、声明、头文件与术语总索引 · 限定符、存储期与链接
- 限定转换
- 指针、指针运算与回调 · 指针类型与转换
- 限定转换
- 指针、指针运算与回调 · 指针与 const 组合
- 限定转换
- 限定符、对象访问与程序行为边界 · const 与可修改左值
- 消毒器
- 警告、调试、静态分析与消毒器 · 诊断工具选择地图
- 消毒器盲区
- 警告、调试、静态分析与消毒器 · 工具边界与常见诊断陷阱
- 写访问
- 限定符、对象访问与程序行为边界 · const 与可修改左值
- 信号处理
- 限定符、对象访问与程序行为边界 · volatile 与可观察访问
- 行末花括号
- 自动化测试、接口设计、风格与文档 · 命名、格式与 const 使用
- 行为测试
- 自动化测试、接口设计、风格与文档 · C 测试策略地图
- 行优先
- 数组与字符串 · 多维数组与行优先布局
- 修改输入
- 字符串、内存、字符分类与本地化 · 分词与有状态接口
- 虚假唤醒
- 信号、原子操作与标准线程 · 条件变量、等待循环与超时
- 悬空指针
- 指针、指针运算与回调 · 常见陷阱
- 悬空指针
- 动态内存、生命周期与所有权 · free、生存期结束与悬空指针
- 悬空指针
- 作用域、链接与存储期 · 遮蔽、链接冲突与悬空对象
- 学习路线
- 入门导览与第一个程序 · 后续阅读路线
- 循环条件
- 条件、循环与跳转 · for 循环
- 严格别名
- 限定符、对象访问与程序行为边界 · 有效类型、兼容类型与别名访问
- 严格模式
- C 标准演进、特性检测与可移植性 · 编译器扩展与严格一致性模式
- 严格一致程序
- C 标准演进、特性检测与可移植性 · 一致性实现与实现文档
- 一致性实现
- C 标准演进、特性检测与可移植性 · 一致性实现与实现文档
- 依赖文件
- 多文件项目、编译链接与构建系统 · 头文件依赖与增量构建
- 移位
- 运算符、表达式、求值与类型转换 · 位运算与移位
- 遗漏 break
- 条件、循环与跳转 · 嵌套控制流与常见陷阱
- 遗漏返回
- 函数、参数、返回值与递归 · 常见陷阱
- 遗漏汇合
- 信号、原子操作与标准线程 · 数据竞争、死锁与生命周期陷阱
- 已分配存储
- 动态内存、生命周期与所有权 · 动态存储与分配对象的生存期
- 已分配存储期
- 作用域、链接与存储期 · 自动、静态、线程与已分配存储期
- 异步信号
- 信号、原子操作与标准线程 · 信号处理函数与可访问状态
- 异常标志
- 数值转换、数学、排序、查找、随机与时间 · 浮点环境、舍入与异常标志
- 异常终止
- 标准库地图、错误约定与程序控制 · 异常终止与 abort
- 溢出
- 基本类型、对象、声明与初始化 · 常见陷阱
- 溢出比较器
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间陷阱
- 溢出诊断
- 警告、调试、静态分析与消毒器 · UndefinedBehaviorSanitizer 与行为边界
- 隐藏所有权
- 自动化测试、接口设计、风格与文档 · 常见测试与接口陷阱
- 硬件映射
- 限定符、对象访问与程序行为边界 · volatile 与可观察访问
- 优化级别
- 警告、调试、静态分析与消毒器 · 调试信息、优化与可复现问题
- 优化影响
- 警告、调试、静态分析与消毒器 · 工具边界与常见诊断陷阱
- 优先级
- 类型、运算符、声明、头文件与术语总索引 · 运算符与表达式类别
- 有符号溢出
- 运算符、表达式、求值与类型转换 · 常见陷阱
- 有限状态
- 结构体、联合、枚举、位域与类型别名 · 枚举类型与枚举常量
- 有效类型
- 限定符、对象访问与程序行为边界 · 有效类型、兼容类型与别名访问
- 预处理
- 多文件项目、编译链接与构建系统 · 预处理、编译、汇编与链接
- 预处理
- 类型、运算符、声明、头文件与术语总索引 · 预处理、宏与条件编译
- 预处理输出
- 声明、定义、头文件与预处理器 · 翻译单元与多文件程序
- 预定义宏
- C 标准演进、特性检测与可移植性 · __STDC__ 与 __STDC_VERSION__
- 元素大小
- 数值转换、数学、排序、查找、随机与时间 · 排序、查找与比较器契约
- 元素数量
- 动态内存、生命周期与所有权 · 分配大小、元素数量与溢出
- 元素数量
- 格式化输入输出、流与文件 · fread、fwrite 与二进制块读写
- 原子对象
- 限定符、对象访问与程序行为边界 · 原子对象的基本访问规则
- 原子访问
- 限定符、对象访问与程序行为边界 · 原子对象的基本访问规则
- 源代码兼容
- C 标准演进、特性检测与可移植性 · C11/C17 向 C23 迁移清单
- 源位置
- 警告、调试、静态分析与消毒器 · 编译期与链接期诊断
- 源文件
- 声明、定义、头文件与预处理器 · 翻译单元与多文件程序
- 源文件
- 多文件项目、编译链接与构建系统 · 工程目录与构建产物地图
- 约束违反
- 限定符、对象访问与程序行为边界 · 未定义、未指定与实现定义行为
- 阅读顺序
- 入门导览与第一个程序 · 后续阅读路线
- 越界
- 数组与字符串 · 常见陷阱
- 越界
- 警告、调试、静态分析与消毒器 · AddressSanitizer 与内存错误
- 运算符
- 类型、运算符、声明、头文件与术语总索引 · 运算符与表达式类别
- 运算符陷阱
- 运算符、表达式、求值与类型转换 · 常见陷阱
- 运算符优先级
- 运算符、表达式、求值与类型转换 · 优先级、结合性与括号
- 运行期断言
- 标准库地图、错误约定与程序控制 · 断言与运行期诊断
- 运行期长度
- 数组与字符串 · VLA 与变长修改类型
- 运行时检查
- 警告、调试、静态分析与消毒器 · UndefinedBehaviorSanitizer 与行为边界
- 运行时约束
- 字符串、内存、字符分类与本地化 · Annex K 边界检查接口
- 暂定定义
- 声明、定义、头文件与预处理器 · 外部定义与暂定定义
- 增量构建
- 多文件项目、编译链接与构建系统 · 头文件依赖与增量构建
- 栈帧
- 警告、调试、静态分析与消毒器 · 断点、单步与调用栈
- 长度推断
- 数组与字符串 · 数组初始化、长度推断与 sizeof
- 诊断
- 标准库地图、错误约定与程序控制 · 断言与运行期诊断
- 诊断
- 类型、运算符、声明、头文件与术语总索引 · 行为、诊断、并发与可移植性术语
- 诊断上下文
- 警告、调试、静态分析与消毒器 · 编译期与链接期诊断
- 诊断选项
- C 标准演进、特性检测与可移植性 · 编译器扩展与严格一致性模式
- 整数除法
- 运算符、表达式、求值与类型转换 · 算术运算与常用类型转换
- 整数类型
- 基本类型、对象、声明与初始化 · 基本类型家族
- 整数提升
- 运算符、表达式、求值与类型转换 · 算术运算与常用类型转换
- 正常路径
- 自动化测试、接口设计、风格与文档 · 正常、边界与错误路径
- 执行环境
- C 标准演进、特性检测与可移植性 · hosted 与 freestanding
- 值表示
- 限定符、对象访问与程序行为边界 · 对象表示、值表示与填充字节
- 只测成功路径
- 自动化测试、接口设计、风格与文档 · 常见测试与接口陷阱
- 只读对象
- 基本类型、对象、声明与初始化 · const 对象
- 只读访问
- 指针、指针运算与回调 · 指针与 const 组合
- 只读字面量
- 数组与字符串 · 字符数组与字符串字面量
- 指定初始化器
- 结构体、联合、枚举、位域与类型别名 · 聚合初始化、指定初始化器与复制
- 指向常量
- 指针、指针运算与回调 · 指针与 const 组合
- 指向数组的指针
- 数组与字符串 · 多维数组与行优先布局
- 指向数组的指针
- 指针、指针运算与回调 · 数组与指针的关系
- 指针比较
- 指针、指针运算与回调 · 指针相减与比较
- 指针对象
- 指针、指针运算与回调 · 指针对象、地址与解引用
- 指针加减
- 指针、指针运算与回调 · 指针算术与单尾位置
- 指针陷阱
- 指针、指针运算与回调 · 常见陷阱
- 中英文术语
- 类型、运算符、声明、头文件与术语总索引 · 中英文术语与章节交叉引用
- 终止空字符
- 数组与字符串 · 遍历、哨兵与边界
- 终止条件
- 函数、参数、返回值与递归 · 递归、基例与终止条件
- 终止状态
- 标准库地图、错误约定与程序控制 · 异常终止与 abort
- 重复包含
- 声明、定义、头文件与预处理器 · #include 与 include guard
- 重复定义
- 声明、定义、头文件与预处理器 · 重复定义、宏污染与保留标识符
- 重复符号
- 多文件项目、编译链接与构建系统 · 目标文件、符号与链接诊断
- 重复求值
- 声明、定义、头文件与预处理器 · 宏展开、括号与副作用
- 重复释放
- 动态内存、生命周期与所有权 · 常见陷阱
- 重新编译
- 多文件项目、编译链接与构建系统 · 头文件依赖与增量构建
- 转换例外
- 数组与字符串 · 数组到指针的转换
- 状态码
- 自动化测试、接口设计、风格与文档 · 状态码、所有权与缓冲区接口
- 资源清理
- 自动化测试、接口设计、风格与文档 · 确定性、隔离与清理
- 资源释放
- 动态内存、生命周期与所有权 · 清理路径与失败回滚
- 字段宽度
- 格式化输入输出、流与文件 · scanf 家族与格式化输入
- 字符串化
- 声明、定义、头文件与预处理器 · 字符串化与记号拼接
- 字符串长度
- 字符串、内存、字符分类与本地化 · 空字符结尾字符串与数组边界
- 字符串字面量
- 数组与字符串 · 字符数组与字符串字面量
- 字符类型
- 基本类型、对象、声明与初始化 · 基本类型家族
- 字符类型
- 限定符、对象访问与程序行为边界 · 字符类型访问与 memcpy
- 字符数组
- 数组与字符串 · 字符数组与字符串字面量
- 字符数组
- 字符串、内存、字符分类与本地化 · 空字符结尾字符串与数组边界
- 字节访问
- 限定符、对象访问与程序行为边界 · 字符类型访问与 memcpy
- 字节序
- C 标准演进、特性检测与可移植性 · 对象表示、字节序与对齐
- 字面量修改
- 数组与字符串 · 常见陷阱
- 自包含头文件
- 声明、定义、头文件与预处理器 · 自包含头文件与接口契约
- 自包含头文件
- 自动化测试、接口设计、风格与文档 · 公开头文件与 API 契约
- 自动存储期
- 作用域、链接与存储期 · 自动、静态、线程与已分配存储期
- 自动对象
- 作用域、链接与存储期 · 递归、自动状态与静态状态
- 自动门禁
- 自动化测试、接口设计、风格与文档 · 测试框架与 CI 入口
- 自增自减
- 运算符、表达式、求值与类型转换 · 赋值、自增自减与复合赋值
- 总索引
- 类型、运算符、声明、头文件与术语总索引 · 索引范围与使用方法
- 最小复现
- 警告、调试、静态分析与消毒器 · 崩溃信息与最小复现
- 左值访问
- 限定符、对象访问与程序行为边界 · 有效类型、兼容类型与别名访问
- 作用域
- 作用域、链接与存储期 · 作用域、链接、存储期与生存期
- abnormal termination
- 标准库地图、错误约定与程序控制 · 异常终止与 abort
- abort
- 标准库地图、错误约定与程序控制 · 异常终止与 abort
- abs
- 数值转换、数学、排序、查找、随机与时间 · 整数工具与检查算术
- add_executable
- 多文件项目、编译链接与构建系统 · CMake 目标模型入口
- add_library
- 多文件项目、编译链接与构建系统 · CMake 目标模型入口
- address sanitizer
- 警告、调试、静态分析与消毒器 · AddressSanitizer 与内存错误
- aggregate copy
- 结构体、联合、枚举、位域与类型别名 · 聚合初始化、指定初始化器与复制
- aggregate pitfalls
- 结构体、联合、枚举、位域与类型别名 · 常见陷阱
- aligned_alloc
- 动态内存、生命周期与所有权 · 零大小请求、对齐与接口边界
- alignof
- 运算符、表达式、求值与类型转换 · 显式转换、大小与对齐
- allocated storage
- 动态内存、生命周期与所有权 · 动态存储与分配对象的生存期
- allocation size
- 动态内存、生命周期与所有权 · 分配大小、元素数量与溢出
- Annex K
- 字符串、内存、字符分类与本地化 · Annex K 边界检查接口
- API 契约
- 自动化测试、接口设计、风格与文档 · 公开头文件与 API 契约
- API 文档
- 自动化测试、接口设计、风格与文档 · API 注释与使用示例
- ar
- 多文件项目、编译链接与构建系统 · 静态库与归档工具
- archive
- 多文件项目、编译链接与构建系统 · 静态库与归档工具
- argc
- 标准库地图、错误约定与程序控制 · 命令行参数与环境查询
- argv
- 标准库地图、错误约定与程序控制 · 命令行参数与环境查询
- array decay
- 数组与字符串 · 数组到指针的转换
- array decay
- 指针、指针运算与回调 · 数组与指针的关系
- array parameter
- 数组与字符串 · 数组参数与长度契约
- array type
- 数组与字符串 · 数组类型、元素与有效下标
- ASan
- 警告、调试、静态分析与消毒器 · AddressSanitizer 与内存错误
- assert
- 标准库地图、错误约定与程序控制 · 断言与运行期诊断
- associativity
- 运算符、表达式、求值与类型转换 · 优先级、结合性与括号
- at_quick_exit
- 标准库地图、错误约定与程序控制 · 快速与立即终止
- atexit
- 标准库地图、错误约定与程序控制 · 正常终止与退出处理函数
- atomic object
- 限定符、对象访问与程序行为边界 · 原子对象的基本访问规则
- atomic object
- 信号、原子操作与标准线程 · 原子能力、对象与初始化
- atomic operations
- 信号、原子操作与标准线程 · 原子加载、存储与读改写
- atomic_fetch_add
- 信号、原子操作与标准线程 · 原子加载、存储与读改写
- atomic_flag
- 信号、原子操作与标准线程 · 比较交换、atomic_flag 与无锁查询
- atomic_init
- 信号、原子操作与标准线程 · 原子能力、对象与初始化
- atomic_load
- 信号、原子操作与标准线程 · 原子加载、存储与读改写
- atomic_signal_fence
- 信号、原子操作与标准线程 · 内存顺序与线程、信号栅栏
- atomic_store
- 信号、原子操作与标准线程 · 原子加载、存储与读改写
- atomic_thread_fence
- 信号、原子操作与标准线程 · 内存顺序与线程、信号栅栏
- backtrace
- 警告、调试、静态分析与消毒器 · 断点、单步与调用栈
- behavior taxonomy
- 限定符、对象访问与程序行为边界 · 未定义、未指定与实现定义行为
- bilingual glossary
- 类型、运算符、声明、头文件与术语总索引 · 中英文术语与章节交叉引用
- bit-field
- 结构体、联合、枚举、位域与类型别名 · 位域、宽度与实现边界
- bitmask
- 运算符、表达式、求值与类型转换 · 位运算与移位
- block I/O
- 格式化输入输出、流与文件 · fread、fwrite 与二进制块读写
- break
- 条件、循环与跳转 · break、continue 与 goto
- bsearch
- 数值转换、数学、排序、查找、随机与时间 · 排序、查找与比较器契约
- buffering
- 格式化输入输出、流与文件 · 缓冲、刷新与交互式输出
- build
- 入门导览与第一个程序 · 编译与运行
- build pipeline
- 多文件项目、编译链接与构建系统 · 预处理、编译、汇编与链接
- build pitfalls
- 多文件项目、编译链接与构建系统 · 常见构建陷阱
- build profile
- 多文件项目、编译链接与构建系统 · Debug、Release 与构建配置
- bytewise copy
- 限定符、对象访问与程序行为边界 · 字符类型访问与 memcpy
- bytewise operation
- 字符串、内存、字符分类与本地化 · 内存操作与对象重叠
- C 字符串
- 数组与字符串 · 字符数组与字符串字面量
- C locale
- 字符串、内存、字符分类与本地化 · locale 类别与 setlocale
- C string
- 字符串、内存、字符分类与本地化 · 空字符结尾字符串与数组边界
- C11
- C 标准演进、特性检测与可移植性 · C11、C17、C23 基线地图
- C17
- C 标准演进、特性检测与可移植性 · C11、C17、C23 基线地图
- C23
- 入门导览与第一个程序 · 工具链与命令行
- C23
- C 标准演进、特性检测与可移植性 · C11、C17、C23 基线地图
- calendar time
- 数值转换、数学、排序、查找、随机与时间 · 日历时间与分解时间
- call_once
- 信号、原子操作与标准线程 · 一次初始化与线程专用存储
- callback
- 指针、指针运算与回调 · 函数指针与类型明确的回调
- calloc
- 动态内存、生命周期与所有权 · malloc、calloc 与初始状态
- capability detection
- C 标准演进、特性检测与可移植性 · 能力探测程序及输出解释
- case
- 条件、循环与跳转 · switch、case 与 default
- cast
- 运算符、表达式、求值与类型转换 · 显式转换、大小与对齐
- cc
- 入门导览与第一个程序 · 工具链与命令行
- CHAR_BIT
- 基本类型、对象、声明与初始化 · 大小与范围
- CHAR_BIT
- 限定符、对象访问与程序行为边界 · 可移植性边界与实现假设
- char16_t
- 字符串、内存、字符分类与本地化 · C23 编码字符类型与 Unicode 边界
- char32_t
- 字符串、内存、字符分类与本地化 · C23 编码字符类型与 Unicode 边界
- char8_t
- 字符串、内存、字符分类与本地化 · C23 编码字符类型与 Unicode 边界
- checked arithmetic
- 数值转换、数学、排序、查找、随机与时间 · 整数工具与检查算术
- CI
- 自动化测试、接口设计、风格与文档 · 测试框架与 CI 入口
- ckd_add
- 数值转换、数学、排序、查找、随机与时间 · 整数工具与检查算术
- Clang
- 入门导览与第一个程序 · 工具链与命令行
- cleanup path
- 动态内存、生命周期与所有权 · 清理路径与失败回滚
- clearerr
- 格式化输入输出、流与文件 · EOF、错误标志与状态清理
- CLI 测试
- 自动化测试、接口设计、风格与文档 · 单元、集成与命令行测试
- clock_t
- 数值转换、数学、排序、查找、随机与时间 · 处理器时间、时间基准与持续时间
- CMake
- 多文件项目、编译链接与构建系统 · CMake 目标模型入口
- CMake target
- 多文件项目、编译链接与构建系统 · CMake 目标模型入口
- cnd_signal
- 信号、原子操作与标准线程 · 条件变量、等待循环与超时
- cnd_t
- 信号、原子操作与标准线程 · 条件变量、等待循环与超时
- cnd_wait
- 信号、原子操作与标准线程 · 条件变量、等待循环与超时
- coding style
- 自动化测试、接口设计、风格与文档 · 命名、格式与 const 使用
- compare and exchange
- 信号、原子操作与标准线程 · 比较交换、atomic_flag 与无锁查询
- compare_exchange
- 信号、原子操作与标准线程 · 比较交换、atomic_flag 与无锁查询
- compiler diagnostic
- 警告、调试、静态分析与消毒器 · 编译期与链接期诊断
- complex math
- 数值转换、数学、排序、查找、随机与时间 · 复数与类型泛化数学
- complex.h
- 数值转换、数学、排序、查找、随机与时间 · 复数与类型泛化数学
- compound assignment
- 运算符、表达式、求值与类型转换 · 赋值、自增自减与复合赋值
- concurrency library map
- 信号、原子操作与标准线程 · 信号、原子与线程接口地图
- concurrency pitfalls
- 信号、原子操作与标准线程 · 数据竞争、死锁与生命周期陷阱
- condition variable
- 信号、原子操作与标准线程 · 条件变量、等待循环与超时
- conditional compilation
- 声明、定义、头文件与预处理器 · 条件编译与特性检测
- conditional feature
- C 标准演进、特性检测与可移植性 · 条件特性与 __STDC_NO_*__
- conformance
- C 标准演进、特性检测与可移植性 · 一致性实现与实现文档
- conformance mode
- C 标准演进、特性检测与可移植性 · 编译器扩展与严格一致性模式
- const
- 基本类型、对象、声明与初始化 · const 对象
- const
- 限定符、对象访问与程序行为边界 · 限定类型与限定转换
- const
- 自动化测试、接口设计、风格与文档 · 命名、格式与 const 使用
- const 对象
- 限定符、对象访问与程序行为边界 · const 与可修改左值
- const pointer
- 指针、指针运算与回调 · 指针与 const 组合
- continue
- 条件、循环与跳转 · break、continue 与 goto
- continuous integration
- 自动化测试、接口设计、风格与文档 · 测试框架与 CI 入口
- ctype
- 字符串、内存、字符分类与本地化 · 字符分类、大小写与合法参数
- dangling pointer
- 动态内存、生命周期与所有权 · free、生存期结束与悬空指针
- Debug
- 警告、调试、静态分析与消毒器 · 调试信息、优化与可复现问题
- Debug 构建
- 多文件项目、编译链接与构建系统 · Debug、Release 与构建配置
- debug build
- 警告、调试、静态分析与消毒器 · 调试信息、优化与可复现问题
- declaration index
- 类型、运算符、声明、头文件与术语总索引 · 声明、声明符与类型名
- declaration vs definition
- 声明、定义、头文件与预处理器 · 声明与定义
- default
- 条件、循环与跳转 · switch、case 与 default
- dependency file
- 多文件项目、编译链接与构建系统 · 头文件依赖与增量构建
- dereference
- 指针、指针运算与回调 · 指针对象、地址与解引用
- diagnostic pitfalls
- 警告、调试、静态分析与消毒器 · 工具边界与常见诊断陷阱
- diagnostic workflow
- 警告、调试、静态分析与消毒器 · 诊断工具选择地图
- difftime
- 数值转换、数学、排序、查找、随机与时间 · 处理器时间、时间基准与持续时间
- div
- 数值转换、数学、排序、查找、随机与时间 · 整数工具与检查算术
- do while
- 条件、循环与跳转 · while 与 do while
- documentation comment
- 自动化测试、接口设计、风格与文档 · API 注释与使用示例
- dynamic allocation
- 动态内存、生命周期与所有权 · malloc、calloc 与初始状态
- dynamic memory pitfalls
- 动态内存、生命周期与所有权 · 常见陷阱
- EDOM
- 标准库地图、错误约定与程序控制 · errno 与错误宏
- effective type
- 限定符、对象访问与程序行为边界 · 有效类型、兼容类型与别名访问
- EILSEQ
- 标准库地图、错误约定与程序控制 · errno 与错误宏
- EILSEQ
- 字符串、内存、字符分类与本地化 · 多字节转换与 mbstate_t
- else
- 条件、循环与跳转 · if 与 else
- encoded character
- 字符串、内存、字符分类与本地化 · C23 编码字符类型与 Unicode 边界
- endptr
- 数值转换、数学、排序、查找、随机与时间 · 文本数值转换与结束位置
- enum
- 结构体、联合、枚举、位域与类型别名 · 枚举类型与枚举常量
- EOF
- 格式化输入输出、流与文件 · EOF、错误标志与状态清理
- ERANGE
- 标准库地图、错误约定与程序控制 · errno 与错误宏
- errno
- 标准库地图、错误约定与程序控制 · errno 与错误宏
- error handling pitfalls
- 标准库地图、错误约定与程序控制 · 错误处理与程序控制陷阱
- error number
- 标准库地图、错误约定与程序控制 · errno 与错误宏
- exit
- 标准库地图、错误约定与程序控制 · 正常终止与退出处理函数
- EXIT_SUCCESS
- 标准库地图、错误约定与程序控制 · 正常终止与退出处理函数
- expected
- 信号、原子操作与标准线程 · 比较交换、atomic_flag 与无锁查询
- expression
- 运算符、表达式、求值与类型转换 · 表达式、操作数与结果类型
- extern
- 作用域、链接与存储期 · static 与 extern
- fallthrough
- 条件、循环与跳转 · switch、case 与 default
- FAM
- 结构体、联合、枚举、位域与类型别名 · 柔性数组成员
- fclose
- 格式化输入输出、流与文件 · 文件打开模式与流生命周期
- feature probe
- C 标准演进、特性检测与可移植性 · 能力探测程序及输出解释
- fenv.h
- 数值转换、数学、排序、查找、随机与时间 · 浮点环境、舍入与异常标志
- fenv.h
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间接口地图
- feof
- 格式化输入输出、流与文件 · EOF、错误标志与状态清理
- ferror
- 格式化输入输出、流与文件 · EOF、错误标志与状态清理
- fflush
- 格式化输入输出、流与文件 · 缓冲、刷新与交互式输出
- fflush(stdin)
- 格式化输入输出、流与文件 · 流与文件操作陷阱
- fgetc
- 格式化输入输出、流与文件 · 字符、字符串与行输入输出
- fgetpos
- 格式化输入输出、流与文件 · 文件位置与重新定位
- fgets
- 格式化输入输出、流与文件 · 字符、字符串与行输入输出
- FILE
- 格式化输入输出、流与文件 · FILE、标准流与流方向
- file management
- 格式化输入输出、流与文件 · 文件重命名、删除与临时文件
- file mode
- 格式化输入输出、流与文件 · 文件打开模式与流生命周期
- file positioning
- 格式化输入输出、流与文件 · 文件位置与重新定位
- file-local function
- 函数、参数、返回值与递归 · 局部状态、static 函数与接口边界
- floating environment
- 数值转换、数学、排序、查找、随机与时间 · 浮点环境、舍入与异常标志
- fopen
- 格式化输入输出、流与文件 · 文件打开模式与流生命周期
- for
- 条件、循环与跳转 · for 循环
- formatted input
- 格式化输入输出、流与文件 · scanf 家族与格式化输入
- formatted output
- 格式化输入输出、流与文件 · printf 家族与格式化输出
- fpclassify
- 数值转换、数学、排序、查找、随机与时间 · 实数数学、分类与错误报告
- fprintf
- 格式化输入输出、流与文件 · printf 家族与格式化输出
- fputc
- 格式化输入输出、流与文件 · 字符、字符串与行输入输出
- fputs
- 格式化输入输出、流与文件 · 字符、字符串与行输入输出
- fread
- 格式化输入输出、流与文件 · fread、fwrite 与二进制块读写
- free
- 动态内存、生命周期与所有权 · free、生存期结束与悬空指针
- freestanding
- C 标准演进、特性检测与可移植性 · hosted 与 freestanding
- fscanf
- 格式化输入输出、流与文件 · scanf 家族与格式化输入
- fseek
- 格式化输入输出、流与文件 · 文件位置与重新定位
- ftell
- 格式化输入输出、流与文件 · 文件位置与重新定位
- function parameters
- 函数、参数、返回值与递归 · C23 参数列表
- fwrite
- 格式化输入输出、流与文件 · fread、fwrite 与二进制块读写
- GCC
- 入门导览与第一个程序 · 工具链与命令行
- getenv
- 标准库地图、错误约定与程序控制 · 命令行参数与环境查询
- goto
- 条件、循环与跳转 · break、continue 与 goto
- happens-before
- 信号、原子操作与标准线程 · 内存顺序与线程、信号栅栏
- header contract
- 声明、定义、头文件与预处理器 · 自包含头文件与接口契约
- header contract
- 自动化测试、接口设计、风格与文档 · 公开头文件与 API 契约
- header guard
- 声明、定义、头文件与预处理器 · #include 与 include guard
- header index
- 类型、运算符、声明、头文件与术语总索引 · 标准头文件
- Hello World
- 入门导览与第一个程序 · 第一个完整程序
- hosted
- C 标准演进、特性检测与可移植性 · hosted 与 freestanding
- identifier namespace
- 作用域、链接与存储期 · 标识符的名字空间
- if
- 条件、循环与跳转 · if 与 else
- immediate termination
- 标准库地图、错误约定与程序控制 · 快速与立即终止
- implementation detail
- 自动化测试、接口设计、风格与文档 · 内部实现与链接可见性
- implementation limits
- C 标准演进、特性检测与可移植性 · 翻译限制、整数范围与数据模型
- include guard
- 声明、定义、头文件与预处理器 · #include 与 include guard
- include guard
- 多文件项目、编译链接与构建系统 · 公开头文件与内部头文件
- int32_t
- 基本类型、对象、声明与初始化 · 定宽整数
- integer promotions
- 运算符、表达式、求值与类型转换 · 算术运算与常用类型转换
- inttypes.h
- 基本类型、对象、声明与初始化 · 定宽整数
- isalpha
- 字符串、内存、字符分类与本地化 · 字符分类、大小写与合法参数
- isdigit
- 字符串、内存、字符分类与本地化 · 字符分类、大小写与合法参数
- ISO C 版本
- C 标准演进、特性检测与可移植性 · C11、C17、C23 基线地图
- LC_ALL
- 字符串、内存、字符分类与本地化 · locale 类别与 setlocale
- library contract
- 标准库地图、错误约定与程序控制 · 接口契约、前置条件与失败约定
- library index
- 类型、运算符、声明、头文件与术语总索引 · 标准库接口
- library map
- 标准库地图、错误约定与程序控制 · 标准库头文件与任务地图
- library portability
- C 标准演进、特性检测与可移植性 · 头文件和库接口的可移植边界
- line I/O
- 格式化输入输出、流与文件 · 字符、字符串与行输入输出
- linkage
- 作用域、链接与存储期 · 无链接、内部链接与外部链接
- locale 依赖
- 字符串、内存、字符分类与本地化 · 字符串、内存与本地化陷阱
- localeconv
- 字符串、内存、字符分类与本地化 · locale 类别与 setlocale
- lock-free
- 信号、原子操作与标准线程 · 比较交换、atomic_flag 与无锁查询
- macro
- 声明、定义、头文件与预处理器 · 对象式宏与函数式宏
- macro expansion
- 声明、定义、头文件与预处理器 · 宏展开、括号与副作用
- main
- 入门导览与第一个程序 · 第一个完整程序
- make rule
- 多文件项目、编译链接与构建系统 · Make 目标、前置条件与配方
- Makefile
- 多文件项目、编译链接与构建系统 · Make 目标、前置条件与配方
- malloc
- 动态内存、生命周期与所有权 · malloc、calloc 与初始状态
- math_errhandling
- 数值转换、数学、排序、查找、随机与时间 · 实数数学、分类与错误报告
- math.h
- 数值转换、数学、排序、查找、随机与时间 · 实数数学、分类与错误报告
- math.h
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间接口地图
- mbrtowc
- 字符串、内存、字符分类与本地化 · 多字节转换与 mbstate_t
- mbstate_t
- 字符串、内存、字符分类与本地化 · 多字节转换与 mbstate_t
- member access
- 结构体、联合、枚举、位域与类型别名 · 成员访问与结构体指针
- memcmp
- 字符串、内存、字符分类与本地化 · 内存操作与对象重叠
- memcpy
- 限定符、对象访问与程序行为边界 · 字符类型访问与 memcpy
- memcpy
- 字符串、内存、字符分类与本地化 · 内存操作与对象重叠
- memmove
- 字符串、内存、字符分类与本地化 · 内存操作与对象重叠
- memory ordering
- 信号、原子操作与标准线程 · 内存顺序与线程、信号栅栏
- memory_order
- 信号、原子操作与标准线程 · 内存顺序与线程、信号栅栏
- memset
- 字符串、内存、字符分类与本地化 · 内存操作与对象重叠
- minimal reproducible example
- 警告、调试、静态分析与消毒器 · 崩溃信息与最小复现
- mktime
- 数值转换、数学、排序、查找、随机与时间 · 日历时间与分解时间
- modifiable lvalue
- 限定符、对象访问与程序行为边界 · const 与可修改左值
- mtx_lock
- 信号、原子操作与标准线程 · 互斥量、锁定与释放
- mtx_t
- 信号、原子操作与标准线程 · 互斥量、锁定与释放
- mtx_unlock
- 信号、原子操作与标准线程 · 互斥量、锁定与释放
- multibyte conversion
- 字符串、内存、字符分类与本地化 · 多字节转换与 mbstate_t
- mutex locking
- 信号、原子操作与标准线程 · 互斥量、锁定与释放
- NDEBUG
- 标准库地图、错误约定与程序控制 · 断言与运行期诊断
- negative test
- 自动化测试、接口设计、风格与文档 · 正常、边界与错误路径
- normal termination
- 标准库地图、错误约定与程序控制 · 正常终止与退出处理函数
- NULL
- 指针、指针运算与回调 · C23 空指针
- null pointer
- 指针、指针运算与回调 · C23 空指针
- nullptr
- 指针、指针运算与回调 · C23 空指针
- nullptr_t
- 指针、指针运算与回调 · C23 空指针
- numeric conversion
- 数值转换、数学、排序、查找、随机与时间 · 文本数值转换与结束位置
- numeric library map
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间接口地图
- numeric time pitfalls
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间陷阱
- object access pitfalls
- 限定符、对象访问与程序行为边界 · 限定符、别名与对象访问陷阱
- object file
- 多文件项目、编译链接与构建系统 · 目标文件、符号与链接诊断
- object index
- 类型、运算符、声明、头文件与术语总索引 · 限定符、存储期与链接
- object layout
- 结构体、联合、枚举、位域与类型别名 · 成员顺序、填充、对齐与偏移
- object representation
- 限定符、对象访问与程序行为边界 · 对象表示、值表示与填充字节
- off-by-one
- 数组与字符串 · 遍历、哨兵与边界
- offsetof
- 结构体、联合、枚举、位域与类型别名 · 成员顺序、填充、对齐与偏移
- once_flag
- 信号、原子操作与标准线程 · 一次初始化与线程专用存储
- operator index
- 类型、运算符、声明、头文件与术语总索引 · 运算符与表达式类别
- out of memory
- 动态内存、生命周期与所有权 · 分配失败与空指针
- ownership contract
- 动态内存、生命周期与所有权 · 持有、借用与所有权转移
- ownership contract
- 自动化测试、接口设计、风格与文档 · 状态码、所有权与缓冲区接口
- pass by address
- 指针、指针运算与回调 · 指针参数与输出参数
- pass by value
- 函数、参数、返回值与递归 · 调用、实参与按值传递
- point of declaration
- 作用域、链接与存储期 · 声明点与可见范围
- pointer cast
- 指针、指针运算与回调 · 指针类型与转换
- pointer distance
- 指针、指针运算与回调 · 指针相减与比较
- pointer increment
- 指针、指针运算与回调 · 指针算术与单尾位置
- portability boundary
- 限定符、对象访问与程序行为边界 · 可移植性边界与实现假设
- portability pitfalls
- C 标准演进、特性检测与可移植性 · 常见陷阱
- precedence
- 运算符、表达式、求值与类型转换 · 优先级、结合性与括号
- preprocessor index
- 类型、运算符、声明、头文件与术语总索引 · 预处理、宏与条件编译
- preprocessor pitfalls
- 声明、定义、头文件与预处理器 · 重复定义、宏污染与保留标识符
- printf
- 格式化输入输出、流与文件 · printf 家族与格式化输出
- program environment
- 标准库地图、错误约定与程序控制 · 命令行参数与环境查询
- project layout
- 多文件项目、编译链接与构建系统 · 工程目录与构建产物地图
- prototype
- 函数、参数、返回值与递归 · 函数声明、原型与定义
- pseudo-random number
- 数值转换、数学、排序、查找、随机与时间 · 伪随机数、种子与安全边界
- ptrdiff_t
- 指针、指针运算与回调 · 指针相减与比较
- public header
- 多文件项目、编译链接与构建系统 · 公开头文件与内部头文件
- puts
- 入门导览与第一个程序 · 第一个完整程序
- qsort
- 数值转换、数学、排序、查找、随机与时间 · 排序、查找与比较器契约
- qualified type
- 限定符、对象访问与程序行为边界 · 限定类型与限定转换
- quick_exit
- 标准库地图、错误约定与程序控制 · 快速与立即终止
- raise
- 信号、原子操作与标准线程 · 信号模型、注册与触发
- rand
- 数值转换、数学、排序、查找、随机与时间 · 伪随机数、种子与安全边界
- RAND_MAX
- 数值转换、数学、排序、查找、随机与时间 · 伪随机数、种子与安全边界
- real math
- 数值转换、数学、排序、查找、随机与时间 · 实数数学、分类与错误报告
- realloc
- 动态内存、生命周期与所有权 · realloc 与安全扩缩容
- recursive function
- 函数、参数、返回值与递归 · 递归、基例与终止条件
- redeclaration
- 作用域、链接与存储期 · 同一实体的多次声明
- reference index
- 类型、运算符、声明、头文件与术语总索引 · 索引范围与使用方法
- Release 构建
- 多文件项目、编译链接与构建系统 · Debug、Release 与构建配置
- remove
- 格式化输入输出、流与文件 · 文件重命名、删除与临时文件
- rename
- 格式化输入输出、流与文件 · 文件重命名、删除与临时文件
- representation portability
- C 标准演进、特性检测与可移植性 · 对象表示、字节序与对齐
- resize buffer
- 动态内存、生命周期与所有权 · realloc 与安全扩缩容
- restrict
- 限定符、对象访问与程序行为边界 · 限定类型与限定转换
- restrict
- 限定符、对象访问与程序行为边界 · restrict 的访问契约
- restrict 违约
- 限定符、对象访问与程序行为边界 · 限定符、别名与对象访问陷阱
- restricted pointer
- 限定符、对象访问与程序行为边界 · restrict 的访问契约
- return
- 函数、参数、返回值与递归 · 返回值与 void 函数
- return
- 标准库地图、错误约定与程序控制 · 正常终止与退出处理函数
- return type
- 函数、参数、返回值与递归 · 返回值与 void 函数
- rewind
- 格式化输入输出、流与文件 · 文件位置与重新定位
- run
- 入门导览与第一个程序 · 编译与运行
- runtime assertion
- 标准库地图、错误约定与程序控制 · 断言与运行期诊断
- scanf
- 格式化输入输出、流与文件 · scanf 家族与格式化输入
- scope
- 作用域、链接与存储期 · 文件、块、函数与函数原型作用域
- scope pitfalls
- 作用域、链接与存储期 · 遮蔽、链接冲突与悬空对象
- scope vs lifetime
- 作用域、链接与存储期 · 作用域、链接、存储期与生存期
- sentinel value
- 标准库地图、错误约定与程序控制 · 返回值、空指针与哨兵值
- sequenced before
- 运算符、表达式、求值与类型转换 · 求值顺序与副作用
- setlocale
- 字符串、内存、字符分类与本地化 · locale 类别与 setlocale
- setvbuf
- 格式化输入输出、流与文件 · 缓冲、刷新与交互式输出
- shift
- 运算符、表达式、求值与类型转换 · 位运算与移位
- sig_atomic_t
- 信号、原子操作与标准线程 · 信号处理函数与可访问状态
- SIGABRT
- 标准库地图、错误约定与程序控制 · 异常终止与 abort
- signal
- 信号、原子操作与标准线程 · 信号模型、注册与触发
- signal handling
- 信号、原子操作与标准线程 · 信号模型、注册与触发
- signal-safe state
- 信号、原子操作与标准线程 · 信号处理函数与可访问状态
- signal.h
- 信号、原子操作与标准线程 · 信号模型、注册与触发
- signal.h
- 信号、原子操作与标准线程 · 信号、原子与线程接口地图
- size_t
- 动态内存、生命周期与所有权 · 分配大小、元素数量与溢出
- sizeof
- 基本类型、对象、声明与初始化 · 大小与范围
- sizeof
- 运算符、表达式、求值与类型转换 · 显式转换、大小与对齐
- sizeof
- 数组与字符串 · 数组初始化、长度推断与 sizeof
- sizeof
- 数组与字符串 · VLA 与变长修改类型
- sizeof
- 结构体、联合、枚举、位域与类型别名 · 柔性数组成员
- snprintf
- 格式化输入输出、流与文件 · printf 家族与格式化输出
- sorting and searching
- 数值转换、数学、排序、查找、随机与时间 · 排序、查找与比较器契约
- srand
- 数值转换、数学、排序、查找、随机与时间 · 伪随机数、种子与安全边界
- sscanf
- 格式化输入输出、流与文件 · scanf 家族与格式化输入
- standard version macro
- C 标准演进、特性检测与可移植性 · __STDC__ 与 __STDC_VERSION__
- standards migration
- C 标准演进、特性检测与可移植性 · C11/C17 向 C23 迁移清单
- static
- 作用域、链接与存储期 · static 与 extern
- static 函数
- 函数、参数、返回值与递归 · 局部状态、static 函数与接口边界
- static 函数
- 自动化测试、接口设计、风格与文档 · 内部实现与链接可见性
- static 数组参数
- 数组与字符串 · 数组参数与长度契约
- static analyzer
- 警告、调试、静态分析与消毒器 · 静态分析与误报处理
- static local
- 作用域、链接与存储期 · 递归、自动状态与静态状态
- stdarg.h
- 函数、参数、返回值与递归 · 可变参数函数
- stdatomic.h
- 信号、原子操作与标准线程 · 原子能力、对象与初始化
- stdatomic.h
- 信号、原子操作与标准线程 · 信号、原子与线程接口地图
- stdckdint.h
- 数值转换、数学、排序、查找、随机与时间 · 整数工具与检查算术
- stderr
- 格式化输入输出、流与文件 · FILE、标准流与流方向
- stdin
- 格式化输入输出、流与文件 · FILE、标准流与流方向
- stdint.h
- 基本类型、对象、声明与初始化 · 定宽整数
- stdio pitfalls
- 格式化输入输出、流与文件 · 流与文件操作陷阱
- stdio.h
- 入门导览与第一个程序 · 第一个完整程序
- stdlib.h
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间接口地图
- stdout
- 格式化输入输出、流与文件 · FILE、标准流与流方向
- storage duration
- 作用域、链接与存储期 · 自动、静态、线程与已分配存储期
- storage-class specifier
- 作用域、链接与存储期 · static 与 extern
- strcat
- 字符串、内存、字符分类与本地化 · 长度、复制与拼接
- strchr
- 字符串、内存、字符分类与本地化 · 比较、搜索与子串定位
- strcmp
- 字符串、内存、字符分类与本地化 · 比较、搜索与子串定位
- strcpy
- 字符串、内存、字符分类与本地化 · 长度、复制与拼接
- stream model
- 格式化输入输出、流与文件 · FILE、标准流与流方向
- stream status
- 格式化输入输出、流与文件 · EOF、错误标志与状态清理
- strftime
- 数值转换、数学、排序、查找、随机与时间 · 日历时间与分解时间
- string copy
- 字符串、内存、字符分类与本地化 · 长度、复制与拼接
- string pitfalls
- 字符串、内存、字符分类与本地化 · 字符串、内存与本地化陷阱
- string search
- 字符串、内存、字符分类与本地化 · 比较、搜索与子串定位
- strlen
- 字符串、内存、字符分类与本地化 · 长度、复制与拼接
- strncpy
- 字符串、内存、字符分类与本地化 · 长度、复制与拼接
- strrchr
- 字符串、内存、字符分类与本地化 · 比较、搜索与子串定位
- strstr
- 字符串、内存、字符分类与本地化 · 比较、搜索与子串定位
- strtod
- 数值转换、数学、排序、查找、随机与时间 · 文本数值转换与结束位置
- strtok
- 字符串、内存、字符分类与本地化 · 分词与有状态接口
- strtol
- 数值转换、数学、排序、查找、随机与时间 · 文本数值转换与结束位置
- strtoul
- 数值转换、数学、排序、查找、随机与时间 · 文本数值转换与结束位置
- struct tm
- 数值转换、数学、排序、查找、随机与时间 · 日历时间与分解时间
- struct type
- 结构体、联合、枚举、位域与类型别名 · 结构体类型、标签与成员
- switch
- 条件、循环与跳转 · switch、case 与 default
- system test
- 自动化测试、接口设计、风格与文档 · 单元、集成与命令行测试
- tagged union
- 结构体、联合、枚举、位域与类型别名 · 联合体与带标签变体
- target_link_libraries
- 多文件项目、编译链接与构建系统 · CMake 目标模型入口
- tentative definition
- 声明、定义、头文件与预处理器 · 外部定义与暂定定义
- terminology index
- 类型、运算符、声明、头文件与术语总索引 · 行为、诊断、并发与可移植性术语
- test harness
- 自动化测试、接口设计、风格与文档 · 标准 C 最小测试夹具
- test isolation
- 自动化测试、接口设计、风格与文档 · 确定性、隔离与清理
- test strategy
- 自动化测试、接口设计、风格与文档 · C 测试策略地图
- testing pitfalls
- 自动化测试、接口设计、风格与文档 · 常见测试与接口陷阱
- tgmath.h
- 数值转换、数学、排序、查找、随机与时间 · 复数与类型泛化数学
- thrd_create
- 信号、原子操作与标准线程 · 标准线程能力、创建与汇合
- thrd_detach
- 信号、原子操作与标准线程 · 标准线程能力、创建与汇合
- thrd_join
- 信号、原子操作与标准线程 · 标准线程能力、创建与汇合
- thread lifecycle
- 信号、原子操作与标准线程 · 标准线程能力、创建与汇合
- thread_local
- 信号、原子操作与标准线程 · 一次初始化与线程专用存储
- thread-specific storage
- 信号、原子操作与标准线程 · 一次初始化与线程专用存储
- threads.h
- 信号、原子操作与标准线程 · 标准线程能力、创建与汇合
- threads.h
- 信号、原子操作与标准线程 · 信号、原子与线程接口地图
- time measurement
- 数值转换、数学、排序、查找、随机与时间 · 处理器时间、时间基准与持续时间
- time_t
- 数值转换、数学、排序、查找、随机与时间 · 日历时间与分解时间
- time.h
- 数值转换、数学、排序、查找、随机与时间 · 数值、算法、随机与时间接口地图
- timespec
- 数值转换、数学、排序、查找、随机与时间 · 处理器时间、时间基准与持续时间
- timespec_get
- 数值转换、数学、排序、查找、随机与时间 · 处理器时间、时间基准与持续时间
- tmpfile
- 格式化输入输出、流与文件 · 文件重命名、删除与临时文件
- token pasting
- 声明、定义、头文件与预处理器 · 字符串化与记号拼接
- tokenization
- 字符串、内存、字符分类与本地化 · 分词与有状态接口
- toupper
- 字符串、内存、字符分类与本地化 · 字符分类、大小写与合法参数
- towupper
- 字符串、内存、字符分类与本地化 · 宽字符、宽字符串与字符分类
- translation unit
- 声明、定义、头文件与预处理器 · 翻译单元与多文件程序
- translation unit
- 多文件项目、编译链接与构建系统 · 翻译单元、声明与定义
- truth value
- 条件、循环与跳转 · 条件表达式与真假规则
- tss_create
- 信号、原子操作与标准线程 · 一次初始化与线程专用存储
- type alias
- 结构体、联合、枚举、位域与类型别名 · typedef 与类型别名
- type index
- 类型、运算符、声明、头文件与术语总索引 · 基本类型、派生类型与复合类型
- typedef
- 指针、指针运算与回调 · 函数指针与类型明确的回调
- typedef
- 结构体、联合、枚举、位域与类型别名 · typedef 与类型别名
- UBSan
- 警告、调试、静态分析与消毒器 · UndefinedBehaviorSanitizer 与行为边界
- uchar.h
- 字符串、内存、字符分类与本地化 · C23 编码字符类型与 Unicode 边界
- undefined behavior sanitizer
- 警告、调试、静态分析与消毒器 · UndefinedBehaviorSanitizer 与行为边界
- unsequenced
- 运算符、表达式、求值与类型转换 · 求值顺序与副作用
- unsigned char
- 限定符、对象访问与程序行为边界 · 对象表示、值表示与填充字节
- unsigned char
- 字符串、内存、字符分类与本地化 · 字符分类、大小写与合法参数
- usual arithmetic conversions
- 运算符、表达式、求值与类型转换 · 算术运算与常用类型转换
- va_list
- 函数、参数、返回值与递归 · 可变参数函数
- variable length array
- 数组与字符串 · VLA 与变长修改类型
- variadic function
- 函数、参数、返回值与递归 · 可变参数函数
- variadic macro
- 声明、定义、头文件与预处理器 · 可变参数宏与 C23 __VA_OPT__
- VLA
- 数组与字符串 · VLA 与变长修改类型
- void
- 基本类型、对象、声明与初始化 · 基本类型家族
- void
- 函数、参数、返回值与递归 · C23 参数列表
- void *
- 指针、指针运算与回调 · 指针类型与转换
- void 函数
- 函数、参数、返回值与递归 · 返回值与 void 函数
- volatile
- 限定符、对象访问与程序行为边界 · 限定类型与限定转换
- volatile
- 信号、原子操作与标准线程 · 信号处理函数与可访问状态
- volatile 访问
- 限定符、对象访问与程序行为边界 · volatile 与可观察访问
- volatile 误用
- 限定符、对象访问与程序行为边界 · 限定符、别名与对象访问陷阱
- volatile access
- 限定符、对象访问与程序行为边界 · volatile 与可观察访问
- warnings as errors
- 警告、调试、静态分析与消毒器 · 严格警告与把警告当错误
- watchpoint
- 警告、调试、静态分析与消毒器 · 变量、表达式与数据流检查
- wchar_t
- 字符串、内存、字符分类与本地化 · 宽字符、宽字符串与字符分类
- wcrtomb
- 字符串、内存、字符分类与本地化 · 多字节转换与 mbstate_t
- wcslen
- 字符串、内存、字符分类与本地化 · 宽字符、宽字符串与字符分类
- wctype
- 字符串、内存、字符分类与本地化 · 宽字符、宽字符串与字符分类
- while
- 条件、循环与跳转 · while 与 do while
- wide character
- 字符串、内存、字符分类与本地化 · 宽字符、宽字符串与字符分类
- zero-size request
- 动态内存、生命周期与所有权 · 零大小请求、对齐与接口边界