【问题标题】:(Where) Does clang document implementation-defined behavior?(在哪里)clang 记录实现定义的行为吗?
【发布时间】:2016-03-31 13:36:33
【问题描述】:

C 中实现定义的行为是未指定的行为,每个符合要求的实现都必须记录其选择。

我很容易找到 gcc here 或 Microsoft C here 的此类文档,但我找不到任何有关 clang 的此类文档。

是我搜索错了还是没有这样的东西?

【问题讨论】:

  • GCC 没有记录所有实现定义的行为。例如。它没有在eel.is/c++draft/basic.stc#general-4 中记录实现定义的行为:是否使用悬空指针(除了取消引用它们)UB?

标签: c gcc clang undefined-behavior


【解决方案1】:

这张票 https://bugs.llvm.org/show_bug.cgi?id=11272 仍处于打开状态(多年以来),因此 clang 似乎没有明确指定实现定义的行为。

不过,在大多数情况下,我敢打赌它与 GCC 相同。

【讨论】:

  • 所以 clang 不是一个符合标准的 C 编译器,它甚至比 Visual Studio 还要糟糕?哦,那会燃烧。甚至 1990 年的 Borland Turbo C 也不比 Visual Studio 差... 规范术语:3.4.1 实现定义的行为 未指定的行为,每个实现都记录了如何做出选择。
  • @Lundin:是的,缺乏文档使其不符合标准。我不同意这使它“比 Visual Studio 更糟糕”。 (虽然我对 VS 的使用还不足以评论它的质量。)
猜你喜欢
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多