在C ++标准中,当违反“应”要求时会发生什么?

Brian Bi

例如,著名词(§3.2/ 1)

任何变量,函数,类类型,枚举类型或模板的翻译单元均不得包含多个定义。

我相信除非另有说明,否则“应”的要求应被解释为隐含地跟随着“否则程序格式错误”。但是,其他人则声称“应”反而意味着“否则行为未定义”。

在每种情况下,我遇到的标准都没有遵循“必须”的要求,而没有遵循“否则行为是不确定的”或“不需要诊断”之类的标准,它出现的规则显然是可诊断的,由我认识的所有编译器诊断出来(以上段落为示例)。因此,我认为这意味着“否则程序格式错误”,需要进行诊断。

无论如何,这些只是我的想法。我希望得到权威的答复。

杰里·科芬

是的,要使其格式正确,程序必须遵循您在问题(第1.3.26节)中引用的“一个定义规则”:

格式正确的程序

根据语法规则,可诊断的语义规则和“一个定义规则”(3.2)构造的C ++程序。

其他可诊断规则指定为(§1.4):

1.4实施合规性[intro.compliance]

1可诊断规则集由本国际标准中的所有句法和语义规则组成,但那些规则包含明确的表示“不需要诊断”或被描述为导致“不确定行为”的规则。
2尽管本国际标准仅规定了C ++实现的要求,但如果将这些要求表述为对程序,程序部分或程序执行的要求,则通常更容易理解。此类要求具有以下含义:
—如果程序不违反本国际标准中的规则,则合格的实施应在其资源限制内接受并正确执行2该程序。
如果程序在实施不支持该构造时违反了任何可诊断的规则或发生了本标准中描述为“有条件支持”的构造,则合格的实施应发出至少一条诊断消息。
—如果某个程序违反了不需要诊断的规则,则本国际标准不对该程序的实现提出任何要求。
[重点添加]

是的,如第二个要点所述,如果违反了可诊断的规则,则需要进行诊断。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 C++ 中为对象赋值时会发生什么

来自分类Dev

发生“注入类名称”时会发生什么?(C ++)

来自分类Dev

为什么Web服务中的方法在C#中返回Arraylist时会发生异常?

来自分类Dev

在 C++ 中的 Map 中插入重复值时会发生什么

来自分类Dev

当非void方法在Objective-C中达到终点时会发生什么?

来自分类Dev

当我在C ++中对未初始化的指针调用“删除”时会发生什么?

来自分类Dev

当没有内存在C#中构造OutOfMemoryException时会发生什么?

来自分类Dev

当将int列表转换为C中的char列表时会发生什么?

来自分类Dev

在svm.scv()中同时使用“ class_weight”和“ c”参数时会发生什么?

来自分类Dev

当用C中的空字符截断字符串时会发生什么?

来自分类Dev

当非void方法在Objective-C中达到终点时会发生什么?

来自分类Dev

在C ++中为对象分配引用的值时会发生什么?

来自分类Dev

当我在C ++中对类使用vector时会发生什么

来自分类Dev

在 C 中,当开始不满足 for 循环的条件时会发生什么?

来自分类Dev

取消引用后增量C时会发生什么

来自分类Dev

当您从C ++函数返回引用时会发生什么?

来自分类Dev

在C ++中,当我对-128,127范围以外的整数使用static_cast <char>时会发生什么?

来自分类Dev

当我们在C#中访问字符串的'Length'属性时会发生什么?

来自分类Dev

当C表达式中发生整数溢出时会发生什么?

来自分类Dev

C alloca函数-尝试分配过多内存时会发生什么

来自分类Dev

在c ++中将字符串值分配给整数变量时会发生什么?

来自分类Dev

在C语言中,将NULL指针传递给strcmp()时会发生什么?

来自分类Dev

当C ++匿名对象替换先前分配的对象时会发生什么?

来自分类Dev

循环“ result_vector = c(result_vector,new_value)”时会发生什么

来自分类Dev

当C ++匿名对象替换先前分配的对象时会发生什么?

来自分类Dev

在C ++中将char连接到字符串时会发生什么情况?

来自分类Dev

c++ 当unique_ptr 的别名超出范围时会发生什么?

来自分类Dev

当我尝试使用空的默认构造函数创建对象但在 ANSI C++ 中添加括号时会发生什么?

来自分类Dev

C ++中的函数const本地对象会发生什么?

Related 相关文章

  1. 1

    在 C++ 中为对象赋值时会发生什么

  2. 2

    发生“注入类名称”时会发生什么?(C ++)

  3. 3

    为什么Web服务中的方法在C#中返回Arraylist时会发生异常?

  4. 4

    在 C++ 中的 Map 中插入重复值时会发生什么

  5. 5

    当非void方法在Objective-C中达到终点时会发生什么?

  6. 6

    当我在C ++中对未初始化的指针调用“删除”时会发生什么?

  7. 7

    当没有内存在C#中构造OutOfMemoryException时会发生什么?

  8. 8

    当将int列表转换为C中的char列表时会发生什么?

  9. 9

    在svm.scv()中同时使用“ class_weight”和“ c”参数时会发生什么?

  10. 10

    当用C中的空字符截断字符串时会发生什么?

  11. 11

    当非void方法在Objective-C中达到终点时会发生什么?

  12. 12

    在C ++中为对象分配引用的值时会发生什么?

  13. 13

    当我在C ++中对类使用vector时会发生什么

  14. 14

    在 C 中,当开始不满足 for 循环的条件时会发生什么?

  15. 15

    取消引用后增量C时会发生什么

  16. 16

    当您从C ++函数返回引用时会发生什么?

  17. 17

    在C ++中,当我对-128,127范围以外的整数使用static_cast <char>时会发生什么?

  18. 18

    当我们在C#中访问字符串的'Length'属性时会发生什么?

  19. 19

    当C表达式中发生整数溢出时会发生什么?

  20. 20

    C alloca函数-尝试分配过多内存时会发生什么

  21. 21

    在c ++中将字符串值分配给整数变量时会发生什么?

  22. 22

    在C语言中,将NULL指针传递给strcmp()时会发生什么?

  23. 23

    当C ++匿名对象替换先前分配的对象时会发生什么?

  24. 24

    循环“ result_vector = c(result_vector,new_value)”时会发生什么

  25. 25

    当C ++匿名对象替换先前分配的对象时会发生什么?

  26. 26

    在C ++中将char连接到字符串时会发生什么情况?

  27. 27

    c++ 当unique_ptr 的别名超出范围时会发生什么?

  28. 28

    当我尝试使用空的默认构造函数创建对象但在 ANSI C++ 中添加括号时会发生什么?

  29. 29

    C ++中的函数const本地对象会发生什么?

热门标签

归档