例如,著名词(§3.2/ 1)
任何变量,函数,类类型,枚举类型或模板的翻译单元均不得包含多个定义。
我相信除非另有说明,否则“应”的要求应被解释为隐含地跟随着“否则程序格式错误”。但是,其他人则声称“应”反而意味着“否则行为未定义”。
在每种情况下,我遇到的标准都没有遵循“必须”的要求,而没有遵循“否则行为是不确定的”或“不需要诊断”之类的标准,它出现的规则显然是可诊断的,由我认识的所有编译器诊断出来(以上段落为示例)。因此,我认为这意味着“否则程序格式错误”,即需要进行诊断。
无论如何,这些只是我的想法。我希望得到权威的答复。
是的,要使其格式正确,程序必须遵循您在问题(第1.3.26节)中引用的“一个定义规则”:
格式正确的程序
根据语法规则,可诊断的语义规则和“一个定义规则”(3.2)构造的C ++程序。
其他可诊断规则指定为(§1.4):
1.4实施合规性[intro.compliance]
1可诊断规则集由本国际标准中的所有句法和语义规则组成,但那些规则包含明确的表示“不需要诊断”或被描述为导致“不确定行为”的规则。
2尽管本国际标准仅规定了C ++实现的要求,但如果将这些要求表述为对程序,程序部分或程序执行的要求,则通常更容易理解。此类要求具有以下含义:
—如果程序不违反本国际标准中的规则,则合格的实施应在其资源限制内接受并正确执行2该程序。
—如果程序在实施不支持该构造时违反了任何可诊断的规则或发生了本标准中描述为“有条件支持”的构造,则合格的实施应发出至少一条诊断消息。
—如果某个程序违反了不需要诊断的规则,则本国际标准不对该程序的实现提出任何要求。
[重点添加]
是的,如第二个要点所述,如果违反了可诊断的规则,则需要进行诊断。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句