Проблема Catch Lib — переопределение анонимного пространства имен. как решить

Я использую Catch Lib для модульного тестирования

Ранее я тестировал заголовки по отдельности, и у меня не было проблем с 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'

может кто-нибудь объяснить мне, что это значит?

0

Решение

Похоже, вы помещаете TEST_CASE в файлы HPP, а затем включаете их обоих в один и тот же файл CPP. У вас есть несколько вариантов:

  • вместо этого переместите контрольные примеры в файлы CPP. Это предпочтительное решение.
  • переместите один из тестовых примеров вверх или вниз на строку, чтобы автоматически сгенерированное имя было другим и чтобы оно не конфликтовало. Это краткосрочное возвращение.
  • если вы действительно хотите поделиться тем, что делают эти тесты, включив их, то оставьте тело тестов в заголовочном файле, но удалите макросы TEST_CASE и вместо этого вызовите их из тестового примера в файле CPP.
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector