要使函数内联,应该在函数原型或函数定义中添加关键字inline还是在函数声明和函数定义中均添加inline关键字。
答案 0 :(得分:5)
如果已经有了声明和定义,则无需在任何地方添加inline
。内联关键字不是神奇的优化咒语,而是更多的链接说明符。
必须在使用它的每个翻译单元中定义一个内联函数。如何在其中定义它?很简单,它放在标题中:
// foo.h
inline void foo() {}
但是,等等,我听到你说,会不会将其放在标头中导致多个定义错误?不是当它被标记为内联时,这就是为什么我称其为链接说明符。内联说明符告诉编译器它看到的所有这些多个定义都是相同的。因此,它实际上可以使用其中任何一个。或者,它可以检查函数体并选择进行代码内联,但这不是必须的。
关键字的主要目的是允许这些多个定义内联显示,而不是使函数的代码内联。同样,如果您在cpp文件中有一个定义,而在标头中有一个声明,则无需执行任何操作。如果您有实用程序,希望将其显示在标题中,请将其放在“定义”和“全部”位置,然后添加inline关键字。
答案 1 :(得分:3)
如何使函数内联:
要将任何功能用作内联,请以关键字“内联”开始其定义。
来自article。