首页 > 后端开发 > C++ > 正文

C 11 中 `constexpr` 如何与 `inline` 交互?

Barbara Streisand
发布: 2024-11-04 05:42:02
原创
514 人浏览过

How Does `constexpr` Interact with `inline` in C  11?

C 11 中的 Constexpr 和 Inline 函数

在 C 11 中,引入 constexpr 作为函数的类型限定符引发了有关其与现有机制 inline 的关系的问题用于内联函数。本文研究了 constexpr 的含义以及它如何与内联交互。

Constexpr 意味着内联

C 11 标准明确指出“constexpr 函数和 constexpr 构造函数是隐式内联的”。这意味着使用 constexpr 作为函数说明符也会隐式设置内联说明符。因此,如果一个函数被声明为 constexpr,它的行为就好像它具有内联说明符。

非常量参数的含义

这意味着如果将非常量参数传递给对于 constexpr 函数,编译器仍会尝试内联该函数,就像它被声明为内联一样。这是因为 constexpr 函数需要满足某些适合内联的标准,例如简单且不递归。

一个定义规则

但是,需要注意的是,内联函数说明符对单一定义规则 (ODR) 的影响比对内联本身的影响更大。具有不同内联限定符的函数可以有多个定义,而 constexpr 函数与内联函数一样,必须有一个定义。

结论

虽然 constexpr 函数隐式暗示内联,但内联说明符的影响有限关于内联决策。编译器最终会根据各种因素(包括函数的大小和复杂性)来决定是否内联函数。 Constexpr 函数最初设计为适合内联,但随后的放宽允许使用更复杂的 constexpr 函数。

以上是C 11 中 `constexpr` 如何与 `inline` 交互?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!