Ошибка переопределения init_unit_test_suite - PullRequest
1 голос
/ 07 марта 2012

Я пытаюсь скомпилировать пример из boost :: test tutorial:

#include <boost/test/included/unit_test.hpp>
using namespace boost::unit_test;

void test_case1() { /* : */ }

test_suite*
init_unit_test_suite( int argc, char* argv[] )
{
  test_suite* ts1 = BOOST_TEST_SUITE( "test_suite1" );
  ts1->add( BOOST_TEST_CASE( &test_case1 ) );
  framework::master_test_suite().add( ts1 );
  return 0;
}

Но я получаю следующую ошибку:

.. \ src \ test.cpp: в функции 'boost :: unit_test :: test_suite * init_unit_test_suite (int, char **) ': .. \ src \ test.cpp: 23: 1: ошибка: переопределение 'boost :: unit_test :: test_suite *
init_unit_test_suite (int, char **) ' C: \ Boost / boost / test / unit_test_suite.hpp: 223: 1: ошибка: 'boost :: unit_test :: test_suite * init_unit_test_suite (int, char **)' ранее определено здесь

Как это исправить?

1 Ответ

1 голос
/ 25 февраля 2014

Вы должны были определить BOOST_TEST_MAIN в командной строке компилятора (или в настройках вашего проекта, если вы используете VS).

Определение BOOST_TEST_MAIN представляет метод, который вы повторно введете позже:

// ************************************************************************** //
// **************                BOOST_TEST_MAIN               ************** //
// ************************************************************************** //

#if defined(BOOST_TEST_MAIN)

#ifdef BOOST_TEST_ALTERNATIVE_INIT_API
bool init_unit_test()                   {
#else
::boost::unit_test::test_suite*
init_unit_test_suite( int, char* [] )   {
#endif

http://svn.boost.org/svn/boost/trunk/boost/test/unit_test_suite.hpp

...