C++ 中 Should 和 Shall 的确切含义标准
我一直在审查 C++ 标准 03 版本。我开始对应该和应该这两个词的含义感到困惑。
标准中的Shall似乎表示强制性要求(will-have),而标准中的Should似乎表示可选要求(could-have)。在英语中,应该表示一种期望,我是否误解了意思?不应该使用可以来代替吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自 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.)
在 C++11 中,shall 用于 C++03 使用 must 的地方,可能是因为它听起来更好。
Should 有时当你想要规定某些东西时使用,但它超出了语言的控制范围,例如
该语言规定 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
The language prescribes that the C++ runtime "must" treat threads fairly, but what can you do about a system manager lowering the priority?