我是否必须在函数实现上重复内联关键字

Tom*_*mas 6 c++ inlining

我总是试图在头文件之外保持实现,所以对于模板和内联函数,我通常会这样做


// File.h
inline bool foo()

#include "File.hpp"
Run Code Online (Sandbox Code Playgroud)
// File.hpp

inline bool foo()
{
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,C++规范对于为函数的实际实现重复内联关键字有什么作用?(如本例所示)

我真的不想这样做,因为它弄乱了很多很多函数,虽然我的编译器没有抱怨,但我想知道编译器是否仍然接受内联提示.

谁知道?

Mar*_*tin 4

我倾向于inline尽可能远离接口,因为它是实现细节而不是接口的一部分。inline因此:省略声明中的第一个。并且仅将其附加到函数定义中。对于包含 hpp 编译器范围与内联无关,因为文件被视为串联。另请参阅http://www.parashift.com/c++-faq/where-to-put-inline-keyword.html了解更详细的说明。