C++ 中 Should 和 Shall 的确切含义标准

发布于 2024-11-18 10:35:43 字数 284 浏览 0 评论 0 原文

我一直在审查 C++ 标准 03 版本。我开始对应该应该这两个词的含义感到困惑。

标准中的Shall似乎表示强制性要求(will-have),而标准中的Should似乎表示可选要求(could-have)。在英语中,应该表示一种期望,我是否误解了意思?不应该使用可以来代替吗?

I've been reviewing the C++ standard 03 version. And I'm beginning to get confused with the meanings of the words Should and Shall.

Shall in the standard seems to indicate a compulsory requirement (will-have), where as Should in the standard seems to indicate an optional requirement (could-have). In English, Should implies an expectation, have I misunderstood the meaning? shouldn't Could be used instead?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一直在等你来 2024-11-25 10:35:43

来自 ISO TR 10176,信息技术 - 编程语言标准准备指南

3.7 本文中使用的辅助动词

3.7.1
表明对编程语言标准或处理器的要求。

3.7.2 应该
对编程语言标准或处理器的建议的指示。

3.7.3 可能
编程语言标准或处理器的可选功能的指示。当本技术报告对支持特定可选功能的编程语言标准提供建议时,在解释条件的句子中使用助动词“may”。

这是2002年的修订版,当前的修订版是2003年,但我认为它没有太大变化。 (当前版本似乎售价 150 欧元,有点贵。我在这里找到了 2002 年版本:http://std.dkuug.dk/jtc1/sc22/wg20/docs/n970-tr10176-2002.pdf。)

From ISO TR 10176, Information technology – Guidelines for the preparation of programming language standards:

3.7 Auxiliary verbs used in this text

3.7.1 shall:
An indication of a requirement on programming language standard or processors.

3.7.2 should:
An indication of a recommendation to programming language standard or processors.

3.7.3 may:
An indication of an optional feature of programming language standard or processors. When this Technical Report provides a recommendation to the programming language standard that supports a specific optional feature, the auxiliary verb “may” is used in the sentence explaining the condition.

This is from the 2002 revision, the current revision is 2003, but I assume it hasn't changed much. (The current revision appears to be available for 150 euros, a bit steep. I found the 2002 revision here: http://std.dkuug.dk/jtc1/sc22/wg20/docs/n970-tr10176-2002.pdf.)

忆悲凉 2024-11-25 10:35:43

在 C++11 中,shall 用于 C++03 使用 must 的地方,可能是因为它听起来更好。

Should 有时当你想要规定某些东西时使用,但它超出了语言的控制范围,例如

实现应确保所有未阻塞的线程最终都能取得进展。 [注意:标准库函数可能会默默地阻塞 I/O 或锁。执行环境中的因素(包括外部施加的线程优先级)可能会阻止实现对前进进度做出某些保证。 ——尾注]

该语言规定 C++ 运行时“必须”公平地对待线程,但是对于系统管理器降低优先级你能做什么呢?

In C++11 shall is used in places where C++03 used must, probably because it sounds nicer.

Should is sometimes used when you want to prescribe something, but it is outside the control of the language, like

Implementations should ensure that all unblocked threads eventually make progress. [Note: Standard library functions may silently block on I/O or locks. Factors in the execution environment, including externally-imposed thread priorities, may prevent an implementation from making certain guarantees of forward progress. — end note ]

The language prescribes that the C++ runtime "must" treat threads fairly, but what can you do about a system manager lowering the priority?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文