繁体   English   中英

具有多个翻译单元的LNK2005错误

[英]LNK2005 error with multiple translation units

我正在编写一个小的任意精度算术库,但遇到了一个问题:

我在exception.hexception.cpp中有一个从std::exception派生的异常类。 Exception.hvector.hvector.h包括,反过来,由my_long.h包括在内。

所以问题是:当我在main.cpp和my_long.cpp中包括my_long.h时,我在异常类中的所有函数都得到了重新定义链接器错误LNK2005 ,这是很合逻辑的,因为我包括了在两个不同的翻译单元中进行分类,然后尝试将它们链接在一起。

有没有可能的解决方法,或者我做错了什么?

您有两种选择。 您可以将my_long.h中的所有函数标记为内联,从而允许多个相同的定义,也可以将函数定义移至my_long.cpp并在my_long.h中提出它们的声明。

通常,为了使头文件可读,除了非常小的功能外,您应该执行第二步。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM