首页 > 后端开发 > C++ > GCC 在 Constexpr 上下文中对非 constexpr 标准库函数的扩展处理是否符合 C 标准?

GCC 在 Constexpr 上下文中对非 constexpr 标准库函数的扩展处理是否符合 C 标准?

Mary-Kate Olsen
发布: 2024-11-28 21:33:14
原创
845 人浏览过

Is GCC's Extensional Treatment of Non-constexpr Standard Library Functions in Constexpr Contexts Conforming to the C   Standard?

非 constexpr 库函数的扩展处理是否符合要求?

GCC 将非 constexpr 标准库函数视为 constexpr 的能力某些情况会引发有关一致性的问题。

矛盾标准

在 C 11 标准草案中,似乎明确允许将内置函数视为 constexpr。然而,在 C 12 中共识发生了变化,提案发生了变化,导致 C 14 明确禁止这种行为。

假设规则

在 C 11 中,它目前还不清楚假定规则是否允许这种行为。一些意见认为可能,但这种解释在处理此特定主题的 LWG 2013 号决议中并未得到证实。

GCC 的实施

GCC 实施此行为基于 LWG 2013 早期提出的决议,该决议允许隐式处理为 constexpr 函数。然而,最终的决议发生了变化,这个扩展现在在 C 14 中是不符合的。

严格模式下的一致性

为了符合 C 14 标准,GCC遇到时应在严格一致性模式(-std=c 11 -pedantic 或 -std=c 14 -pedantic)下发出警告constexpr 上下文中使用的非 constexpr 库函数。或者,应在这些模式下禁用此行为。

内在函数豁免

标准不涵盖编译器内在函数,因此,它们可能会被区别对待。在 constexpr 上下文中使用编译器内部函数很可能仍然可以接受。

以上是GCC 在 Constexpr 上下文中对非 constexpr 标准库函数的扩展处理是否符合 C 标准?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板