在2016年奥卢ISO C++标准会议上,一项名为Inline Variables的提案被标准委员会投票选为C++ 17.
通俗地说,什么是内联变量,它们如何工作以及它们对什么有用?如何声明,定义和使用内联变量?
我相信,inline已经过时,因为我在这里读到:
无论你如何指定一个函数
inline,它都是一个允许编译器忽略的请求:编译器可能内联扩展一些,全部或没有你调用指定函数的地方inline.
然而,Angew似乎理解我不知道的事情.在这个问题中他和我来回走了很多,关于是否inline仍然有用.
这个问题不是一个问题:
inline或在哪里inline仍可用于向编译器提示inline功能:我应该何时为函数/方法编写关键字'inline'?.inline运行代码:强制其他翻译单元中的内联函数请记住,编译器可以随意使用inline,因此inline在那里没有用处:可以inline用来强制而不是建议编译代码的更改?
在C++中,如果方法是显式声明inline(或在头文件中定义),或者允许编译器在他们认为合适的情况下内联方法,那么这些方法是否只有内联?
在C和C++中,inline具有外部链接的函数当然可以在链接时具有多个定义,假设这些定义都是(希望)相同的.(我当然是指使用inline链接规范声明的函数,而不是指编译器或链接时优化器实际内联的函数.)
那么,当遇到多个函数定义时,常见的链接器通常会做什么?特别是:
PS是的,我知道C和C++是单独的语言,但它们都支持inline,并且它们的编译器输出通常可以通过相同的链接器(例如GCC ld)链接,所以我相信它们之间在这方面没有任何区别.