搜索

pdf文档 Contracts for C++

4.44 MB 181 页 0 下载 87 浏览 0 评论 0 收藏
所属分类: 后端开发 / C++
语言 格式 评分
英语
.pdf
3
摘要
The document proposes a Contracts facility for C++ that allows programmers to specify states considered incorrect at certain points in a program, particularly when calling and returning from functions. It introduces syntax for precondition, postcondition, and assertion statements, along with four evaluation semantics: ignore, observe, enforce, and quick_enforce. The proposal also enables user-defined handlers for contract violations, providing a portable and scalable way to detect and mitigate defects during program evaluation.
AI总结
《Contracts for C++》(P2900R8)提案提出了一种在C++中引入合同(contract)机制的功能,该机制经过SG21工作组的深入讨论,并达到了较高共识水平。以下是核心内容的总结: ### 核心观点 1. **合同断言类型** 提案定义了三种合同断言: - **前置条件断言**:用于验证函数调用前的条件是否满足。 - **后置条件断言**:用于验证函数调用后的结果是否符合预期。 - **断言语句**:可在程序的任何关键点表达期望状态。 2. **评估语义** 提案提供了四种评估语义,允许开发者根据需求选择不同的检查方式: - **忽略(ignore)**:不进行任何检查。 - **观察(observe)**:在调试模式下检查,记录违规情况但不停止程序。 - **强制执行(enforce)**:在所有情况下进行检查,发现违规时终止程序。 - **快速强制执行(quick_enforce)**:仅在优化级别较低时进行检查。 3. **用户自定义句柄** 开发者可以指定自定义的错误处理程序,用于处理合同违规情况,增强了灵活性。 4. **目标与应用** 合同机制旨在帮助开发者: - 表达程序在特定点的期望状态。 - 检测和管理程序运行中的缺陷,以 portable( portable )且 scalable 的方式。 - 适用于多种场景,例如验证输入有效性、确保函数行为正确性、检查不变式(invariants)等。 5. **用例示例** - 在金融交易中,验证输入数据的正确性。 - 在图形渲染中,确保状态一致性。 - 在数据处理中,验证输出结果符合预期。 ### 总结 该提案为C++提供了一种强大的工具,用于表达和验证程序状态,帮助开发者更高效地检测和修复缺陷,同时保持功能的可移植性和扩展性。通过灵活的评估语义和自定义句柄,开发者可以根据具体需求选择合适的合同检查方式。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 169 页请下载阅读 -
文档评分
请文明评论,理性发言.