相关疑难解决方法(0)

内联变量如何工作?

在2016年奥卢ISO C++标准会议上,一项名为Inline Variables的提案被标准委员会投票选为C++ 17.

通俗地说,什么是内联变量,它们如何工作以及它们对什么有用?如何声明,定义和使用内联变量?

c++ c++17

106
推荐指数
3
解决办法
3万
查看次数

内联仍然有用吗?

我相信,inline已经过时,因为我在这里读到:

无论你如何指定一个函数inline,它都是一个允许编译器忽略的请求:编译器可能内联扩展一些,全部或没有你调用指定函数的地方inline.

然而,Angew似乎理解我不知道的事情.在这个问题中他和我来回走了很多,关于是否inline仍然有用.

这个问题不是一个问题:

请记住,编译器可以随意使用inline,因此inline在那里没有用处:可以inline用来强制而不是建议编译代码的更改?

c++ methods inline function deprecated

85
推荐指数
2
解决办法
2万
查看次数

什么时候编译器内联C++代码?

在C++中,如果方法是显式声明inline(或在头文件中定义),或者允许编译器在他们认为合适的情况下内联方法,那么这些方法是否只有内联?

c++ compiler-construction optimization inline

18
推荐指数
3
解决办法
8487
查看次数

链接器实际上对多重定义的"内联"函数做了什么?

在C和C++中,inline具有外部链接的函数当然可以在链接时具有多个定义,假设这些定义都是(希望)相同的.(我当然是指使用inline链接规范声明的函数,而不是指编译器或链接时优化器实际内联的函数.)

那么,当遇到多个函数定义时,常见的链接器通常会什么?特别是:

  • 所有定义都包含在最终可执行文件或共享库中吗?
  • 函数的所有调用是否都针对相同的定义?
  • 一个或多个C和C++ ISO标准是否需要上述问题的答案,如果没有,大多数常见平台都做同样的事情吗?

PS是的,我知道C和C++是单独的语言,但它们都支持inline,并且它们的编译器输出通常可以通过相同的链接器(例如GCC ld)链接,所以我相信它们之间在这方面没有任何区别.

c c++ linker inline

7
推荐指数
2
解决办法
745
查看次数