第8章:可移植与现代 C
第 81--90 节 C 代码必须能到处运行。Auto 让可移植成为默认选项,而非例外。
C 最大的优势在于可移植性。同一份 C 代码可以在 Linux、macOS、Windows 和嵌入式系统上 编译运行。但真正的可移植性需要理解平台差异——字节序、字长、线程 API 和编译器扩展。
Auto 默认生成可移植的 C 代码。a2c 转译器处理平台相关的细节,让你专注于程序逻辑。 本章介绍 C 的可移植性全景以及 Auto 如何简化它。
81. C 标准时间线
C 语言经历了多次标准演进,每次都增加新特性并保持向后兼容:
C89/C90 —— 基础。ANSI 于 1989 年标准化 C,ISO 于 1990 年采纳。这是每个编译器 都支持的"经典"C。函数必须先声明后使用,变量必须在代码块顶部声明,// 注释不是标准。
C99 —— 现代化的 C。增加了 // 注释、混合声明与代码、<stdint.h> 固定宽度整数、 变长数组和指派初始化器。
C11 —— 并发更新。增加了 _Static_assert、_Generic、<threads.h>、原子操作 和对齐说明符。Auto 正是以 C11 为目标。
C17/C23 —— 改进和新特性。C23 增加了 typeof、constexpr、auto 类型推断和 改进的属性语法。
Auto 生成 C11 兼容的代码,在保证广泛编译器支持的同时包含 _Static_assert 和 <stdatomic.h> 等现代特性。