C++ 链接阶段出现多个定义错误
如果我的项目由两个翻译单元a.cpp和b.cpp组成,并且有一个h.cpp具有函数定义。在本例中,每个.cpp文件都将被成功编译,但我们将在链接阶段获得多个定义。为了避免这种情况(如果不将定义放在单独的.cpp文件中),可以使用此函数C++ 链接阶段出现多个定义错误,c++,C++,如果我的项目由两个翻译单元a.cpp和b.cpp组成,并且有一个h.cpp具有函数定义。在本例中,每个.cpp文件都将被成功编译,但我们将在链接阶段获得多个定义。为了避免这种情况(如果不将定义放在单独的.cpp文件中),可以使用此函数 内联 静态 静态内联 用一个空名称空间将其包围 有人能解释一下这四种方法之间的区别吗?哪种方法更适合使用。如果它是一个模板函数,会发生什么?会有什么问题吗?这些是对前3个声明的有用解释: 第四种选择是在某些情况下需要研究的特殊情况 如果使用模板,您必须记住,
有人能解释一下这四种方法之间的区别吗?哪种方法更适合使用。如果它是一个模板函数,会发生什么?会有什么问题吗?这些是对前3个声明的有用解释: 第四种选择是在某些情况下需要研究的特殊情况
如果使用模板,您必须记住,所有函数都必须在同一个文件中定义,通常是
.h
或.hpp
。如果要将定义与实现分开,请记住在定义函数的文件末尾包含.cpp
或实现函数的文件。当包含包含函数定义的头文件时,您考虑的所有选项在异常情况下都很有用。通常,您只在标题中保留声明,并将声明包含在cpp文件中,并将定义保留在一个cpp文件或单独的cpp文件中。