6

我总是尝试将实现保持在标题之外,因此对于模板和内联函数,我通常会做这样的事情


// File.h
inline bool foo()

#include "File.hpp"

// File.hpp

inline bool foo()
{
    return 1;
}

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

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

有人知道吗?

4

2 回答 2

4

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

于 2012-07-17T13:51:13.823 回答
4

没关系,但是放入inline源文件就更没有提示了,因为其他翻译单元通常看不到源文件。如果您在标头之外实现该函数,编译器可能无论如何都无法内联它。

在我看来,唯一的实际用途inline是防止在头文件中定义多个函数。

于 2012-07-17T13:39:56.110 回答