gpt4 book ai didi

c++ - Catch Lib 问题 - 匿名 namespace 重新定义。怎么解决

转载 作者:行者123 更新时间:2023-11-28 05:52:41 24 4
gpt4 key购买 nike

我正在使用 Catch Lib 进行单元测试

以前,我单独测试了一个 header ,并且没有遇到 TEST_CASE 问题,但是在最终将所有这些都包含到项目中之后,我遇到了很多这样的错误:

c:\dev\workspace\algolist\src\algolist.hpp(143): error C2374: '`anonymous-namespace'::autoRegistrar143': redefinition; multiple initialization
c:\dev\workspace\algolist\src\mfactory.hpp(143): note: see declaration of '`anonymous-namespace'::autoRegistrar143'
c:\dev\workspace\algolist\src\algolist.hpp(143): error C2084: function 'void ____C_A_T_C_H____T_E_S_T____143(void)' already has a body
c:\dev\workspace\algolist\src\mfactory.hpp(143): note: see previous definition of '____C_A_T_C_H____T_E_S_T____143'

谁能解释一下这是什么意思?

最佳答案

看起来您将 TEST_CASE 放入 HPP 文件中,然后将它们都包含在同一个 CPP 文件中。您有多种选择:

  • 改为将测试用例移至 CPP 文件。这是首选解决方案。
  • 将其中一个测试用例向上或向下移动一行,以便自动生成的名称不同,从而不会发生冲突。这是一个短期的回落。
  • 如果您真的想通过包含这些测试来分享这些测试的作用,请将测试主体保留在头文件中,但删除 TEST_CASE 宏,而是从 CPP 文件中的测试用例中调用它们。

关于c++ - Catch Lib 问题 - 匿名 namespace 重新定义。怎么解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34903163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com