BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #84402同步于 2014/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请问内联函数的inline关键字是放在声明上,还是定义上?还是哪

lfny
2014/11/26镜像同步14 回复
如题
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
hzddm12340机器人#1 · 2014/11/26
放在头文件中定义比较好 发自「贵邮」
lfny机器人#2 · 2014/11/26
我想知道 为什么要放在头文件中??放在源文件中不是也可以吗? 【 在 hzddm12340 的大作中提到: 】 : 放在头文件中定义比较好 : 发自「贵邮」
glazard机器人#3 · 2014/11/26
因为inline函数要进行替换,写在源文件里,调用的文件没有包含这个文件的话,在编译时是看不到函数体的 这好像是个undefined behavior? A function with external linkage is declared with an inline function specifier, but is not also defined in the same translation unit.
lfny机器人#4 · 2014/11/26
调用的文件不是源文件还能是什么文件??定义在源文件里面,并且在源文件里面调用,不正好吗? 【 在 glazard 的大作中提到: 】 : 因为inline函数要进行替换,写在源文件里,调用的文件没有包含这个文件的话,在编译时是看不到函数体的 : 这好像是个undefined behavior? : A function with external linkage is declared with an inline function specifier, but is not also defined in the same translation unit.
nuanyangyang机器人#5 · 2014/11/26
楼主学Java吧,Java虚拟机会自动内联频繁调用的函数。
Aghanim机器人#6 · 2014/11/26
源文件可以很多的 【 在 lfny 的大作中提到: 】 : 调用的文件不是源文件还能是什么文件??定义在源文件里面,并且在源文件里面调用,不正好吗? :
hzddm12340机器人#7 · 2014/11/26
inline 函数可能要在程序中定义不止一次,只要inline 函数的定义在某个源文件中只出现一次,而且在所有源文件中,其定义必须是完全相同的。把 inline 函数的定义放在头文件中,可以确保在调用函数时所使用的定义是相同的,并且保证在调用点该函数的定义对编译器可见。 【 在 lfny 的大作中提到: 】 : 我想知道 为什么要放在头文件中??放在源文件中不是也可以吗? : 【 在 hzddm12340 的大作中提到: 】 : : 放在头文件中定义比较好 : : 发自「贵邮」 : : 发自「贵邮」
glazard机器人#8 · 2014/11/26
【 在 lfny 的大作中提到: 】 : 调用的文件不是源文件还能是什么文件??定义在源文件里面,并且在源文件里面调用,不正好吗? : 额,我想成你说的头文件里写inline,实现在一个源文件,然后另一个文件调用这个函数了 如果你说的是声明定义都在一个源文件里,那应该没区别吧 这个网址有inline的一些解释 http://www.greenend.org.uk/rjk/tech/inline.html
lfny机器人#9 · 2014/11/27
这是primer书中的原话啊,我就是不懂这几句话的意思,第一个问题什么叫定义不止一次?实在不同的源文件中各自定义?普通函数不也能在各种的源文件中定义吗?第二个问题只要inline 函数的定义在某个源文件中只出现一次,而且在所有源文件中,其定义必须是完全相同的。不明白这句话的意思 【 在 hzddm12340 的大作中提到: 】 : inline 函数可能要在程序中定义不止一次,只要inline 函数的定义在某个源文件中只出现一次,而且在所有源文件中,其定义必须是完全相同的。把 : inline 函数的定义放在头文件中,可以确保在调用函数时所使用的定义是相同的,并且保证在调用点该函数的定义对编译器可见。 : : ...................