内联关键字的两种不同效果之间的关系是什么?
What is the relation between the two different effects of the inline keyword?
其中一个是"优化"效应,另一个是与ODR相关的效应。
对我来说,这两个似乎是完全不相关的事情,所以我很难理解为什么相同的关键字用于两者
与const
, static
和auto
(et al)的多种用途比较
c++委员会对保留新关键字非常反感。
从技术上讲,我不认为它实际上改变了ODR—您只应该提供一个定义(这个定义可以出现多次,但应该是相同的)。我有点懒得去查找规范的确切单词,但是我记得在之前关于这个主题的讨论中,"您不能在其他地方有不同的声明"(换句话说,实际的代码本身每次都应该是相同的)。
至于为什么:因为最初的用法仍然是inline
的意图-只是编译器现在足够聪明,可以找出什么时候它是一个好主意,什么时候它不是一个好主意,实际上内联一个函数
关键是我们需要某种方式来告诉编译器和链接器"这个函数是同一个函数,即使你多次看到它"。我们可以发明一个新的关键字,但是编译器使用的关键字越多,作为程序员的我们可用的单词就越少。当然,旧的代码仍然会使用旧的关键字,所以它仍然需要支持。我看不出添加一个与现有关键字相同的新关键字有多大好处。
内联关键字的两种不同效果之间的关系是什么?
在正式意义上,当你inline
一个函数时,它没有外部链接的意义,因此它也使函数链接成为内部的(副作用)。
为什么两个
使用相同的关键字
这是一个典型的副作用接管主线场景的情况,即今天inline
只是程序员对函数的意见,编译器对实际内联调用有最终决定权;然而,当在头文件中定义函数时,它的用法更倾向于使函数具有内部链接。
相关文章:
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 移动语义和深层/浅层复制之间有什么关系?
- #include < conio.h> 和 getch() 方法之间的关系是什么?
- 超市管理系统的类别之间应该是什么关系?
- 指针和程序性能之间有什么关系吗?
- node.h/node.cpp/nodelist.cpp之间的关系
- 运行线程和线程对象之间的关系
- 类型大小与其值范围之间的关系?
- 2个期货之间的依赖关系
- Qt:工作线程和 GUI 事件之间的关系
- 如何强制 qbs 产品与依赖关系之间的同步?
- 在头文件和 .cc 文件之间建立关系
- C 和Windows OS之间的关系
- 为什么赋值运算符和相等运算符之间没有 1:1 的关系?
- QComboBox 在 editTextChanged 和 currentIndexChanged 之间的关系
- 使用 .depends 指定 SUBDIRS 项目之间的依赖关系不起作用
- 各种初始化和构造之间的关系
- 变量之间的关系
- 有符号整数类型的最小值和最大值之间关系的C++标准保证是什么