C++ 库研究笔记——通过inline避免hpp 的mutiple definition 错误

C++用了这么多年,这个却第一次知道,以前没用过hpp

这样:

// foo.hpp
void foo() { /* body */ }

// a.cpp
#include "foo.hpp"

// b.cpp
#include "foo.hpp"


出现错误:mutiple definition


解决办法1:

// foo.hppvoid foo();// foo.cppvoid foo(){/* body */}// a.cpp#include"foo.hpp"// b.cpp#include"foo.hpp"

办法2:

添加 inline 关键字
// foo.hppinlinevoid foo(){/* body */}// a.cpp#include"foo.hpp"// b.cpp#include"foo.hpp"

参见:

Inline keyword in member function definition

a multiple definition error in c++



原文地址:https://www.cnblogs.com/james1207/p/3312937.html