gpt4 book ai didi

c++ - 是否有 C++ 中实现定义行为的完整列表?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:58 26 4
gpt4 key购买 nike

我正在回复对我的回答的评论:C job interview - casting and comparing并发现我找不到 C++ 认为的“实现定义的行为”的完整列表。我知道这类事情有 3 类:未定义的行为、实现定义的行为和未指定的行为;然而,似乎大多数讨论都围绕未定义的行为展开,而当讨论实现定义的行为时,最多只会给出一个例子。总的来说,我倾向于编写大量进入该区域的代码,并且我知道会发生什么样的行为;我仍然希望能够明智地评论它的有效性。我还想指出,我认为在运营社区中存在很多未定义的误诊,而实际上平台已经很好地定义了这些误诊。

请注意,我对给定平台如何选择定义此类行为不太感兴趣,而是希望列出属于 C++ 标准定义的“实现定义”类别的所有行为。

最佳答案

标准本身定义了实现定义行为的所有情况,draft C++ standard在末尾有一个 Index of implementation-defined behavior,它提供了主题和主题在哪个页面上,例如:

additional formats for time_get::do_get_date, 689

alignment, 76

alignment additional values, 76

事实上,每个编译器都应该记录所有实现定义的行为以及它如何处理它们。例如这里是 gcc's C++ Implementation-defined behavior sectiongcc's C Implementation-defined behavior .据我所知,C++ 标准与C99 标准草案 并没有为未指定未定义 行为提供引用。因此,您将不得不求助于在文档中搜索 undefinedunspecified 来查找所有实例。

C99 draft standardAnnex J.1 中的未指定未定义实现 定义的行为提供引用,J .2J.3 分别。

重要的是要注意,未定义的行为 可以由实现指定以及定义,但他们必须记录它。在您的具体示例中,您确实违反了 strict aliasing rules但您使用 type-punning 的替代建议自 C89 以来就已明确定义。

关于c++ - 是否有 C++ 中实现定义行为的完整列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21225757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com