GMa*_*ckG 10
inline 有一些史前用途,但现在最好记住它说:"这个定义将被定义多次,这没关系."
也就是说,通常单定义规则禁止函数的多个定义.这个:
// foo.hpp
void foo() { /* body */ }
// a.cpp
#include "foo.hpp"
// b.cpp
#include "foo.hpp"
Run Code Online (Sandbox Code Playgroud)
导致错误,如foo在两个翻译单元中定义的那样.您可以根据需要随时声明事物.这个:
// foo.hpp
void foo();
// foo.cpp
void foo()
{
/* body */
}
// a.cpp
#include "foo.hpp"
// b.cpp
#include "foo.hpp"
Run Code Online (Sandbox Code Playgroud)
很好,如foo定义一次,并多次声明.什么inline是允许的:
// foo.hpp
inline void foo() { /* body */ }
// a.cpp
#include "foo.hpp"
// b.cpp
#include "foo.hpp"
Run Code Online (Sandbox Code Playgroud)
上班.它说"如果你foo不止一次看到,只要假设它们是相同的并且可以使用它".