C语言提案:引入核心类型系统中的效果系统

2025-01-20

本文提出一个增强C语言核心类型系统的提案,该提案建议引入一个类型和效果系统,迫使函数和代码块声明其评估将产生的效果类别。这将提高元编程的可组合性,并简化MISRA风格限制的定义。该系统跟踪并检查效果,但不处理动态效果。提案定义了三种主要效果组:局部效果(例如局部写入)、持久效果(例如非局部写入)和控制效果(例如非局部控制转移)。该系统通过对每个语句、表达式和函数体赋予类型和效果来实现静态效果检查,并丢弃局部效果以确保正确排序。该提案还建议一些最佳实践,例如限制`mut`和`vol`效果的幅度,并为运算符和控制结构指定效果检查。最终目标是增强C语言的安全性、可读性和可组合性,特别是对于元编程和资源管理。

阅读更多
开发

无需生命周期参数的内存安全

2024-10-21

这篇文章介绍了一种新的安全引用类型 T%,它不需要生命周期注解,并解释了其背后的原理和优势。文章详细讨论了T%如何解决C++中普遍存在的内存安全问题,例如悬空指针和数据竞争。文章还对比了T%与其他安全模型,例如Rust的生命周期参数和Hylo的 mutable value semantics,并解释了T%为何更适合C++。

阅读更多
未分类 安全引用

P3477R0:一个字节确切包含 8 位

2024-10-18

这篇文章讨论了C++是否应该强制规定一个字节等于8位。文章指出,现代硬件和软件平台绝大多数都采用8位字节,C++继续支持非8位字节会导致不必要的复杂性和兼容性问题。文章还提出, POSIX 标准早已强制规定字节为8位,主流编译器也默认支持8位字节。

阅读更多
未分类 字节 CHAR_BIT

C 语言标准章程

2024-06-27

本文档概述了C语言委员会的使命和期望,该委员会负责C语言的规范制定和演进。C语言是一种通用的高级编程语言,适用于低级编程,具有可移植性、互操作性、效率和稳定性等特点。委员会致力于在保持语言简洁性的同时,改进可移植性、安全性、功能安全性,并与C++等其他语言保持良好的互操作性。

阅读更多
未分类