我必须在函数实现中重复内联关键字吗
Do I have to repeat the inlined keyword on function implementation
我总是试图将实现保持在头之外,所以对于模板和内联函数,我通常会做这样的
// File.h
inline bool foo()
#include "File.hpp"
// File.hpp
inline bool foo()
{
return 1;
}
我的问题是,C++规范对在函数的实际实现中重复内联关键字有什么看法?(如本例所示)
我真的不想这么做,因为它有很多函数,而且我的编译器没有抱怨,我想知道编译器是否仍然接受内联提示。
有人知道吗?
我倾向于将inline
放在离接口尽可能远的地方,因为它是一个实现细节,而不是接口的一部分。因此:省略声明中的第一个inline
。并且只将其附加到函数定义中。对于hpp编译器的包含,作用域与内联无关,因为文件被视为连接文件。另请参阅http://www.parashift.com/c++-faq/where-to-put-inline-keyword.html获取更详细的解释。
这没关系,但将inline
放在源文件中就更少了的提示,因为其他翻译单元通常看不到源。如果在头之外实现函数,编译器可能无论如何都无法内联它。
在我看来,inline
的唯一实际用途是防止对标头中定义的函数进行多重定义。
相关文章:
- 如何确保C++函数在定义之前声明(如override关键字)
- C++函数的关键字?
- 应用于运算符而不是构造函数的显式关键字
- 如何通过 boost::p ython 重命名构造函数的关键字参数
- 是否建议在函数中使用using关键字
- C++ 如何将关键字"friend"与两个类的成员函数一起使用 相互包含
- 为什么 c++ 使用 throw() 关键字来指示函数不会引发任何异常
- 统一内存分配库的函数关键字
- 如何使用 "using" 关键字定义函数原型/签名
- 在 new 关键字中,由默认构造函数初始化的类中的元素是否也使用 new 关键字在C++?
- C++带有 using 关键字和参数包的模板函数
- 如何在 C++ 的 lambda 函数中传递同名的局部变量和参数(使用此关键字)?
- g++ 6.3,avx 内联函数上的 Kahan 求和用易失性关键字进行序列化
- ELI5 函数名称后面的"&&"关键字是什么意思
- 为什么静态成员函数定义不能有关键字"static"?
- 带有 "this" 关键字的 Java Copy 构造函数
- C++不使用"inline"或"static"无类函数的关键字时出现重定义链接错误
- 为什么带有 const 关键字的构造函数可以工作,而没有它就不能工作?
- 将 final 关键字添加到没有基类(未派生)的类中的虚函数是否有意义
- 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告