運用システム=Ubuntu。
bjam の使用法 = TRUE。
OpenMP を使用して単体テスト システムを最適化したいと考えています。
bjam スクリプト ファイル:
lib my_lib
:
[ glob sources/*.cpp ]
:
<link>static
;
...
explicit my_project ;
unit-test my_project
:
[ glob UnitTests/*.cpp ]
my_lib
:
<linkflags>-fopenmp
<cflags>-fopenmp
;
私のコードの一部:
for(j = 0; j < AMOUNT; j++)
{
#pragma omp parallel for
for(i = 0; i < 0x10000; ++i)
{
...
try
{
variable1 = func1();
variable2 = func2();
//variable1 and variable 2 must be equal
CPPUNIT_ASSERT_MESSAGE("OLOLO", variable1 == variable2);
}
catch (const std::logic_error& exception)
{
std::cerr << exception.what() << std::endl;
CPPUNIT_ASSERT_MESSAGE("OLOLO", 0);
}
catch (const std::runtime_error & exception)
{
std::cerr << exception.what() << std::endl;
CPPUNIT_ASSERT_MESSAGE("OLOLO", 0);
}
}
}
テスト システムを起動すると、次のエラーで終了します。
terminate called without an active exception
Aborted
CPPUNIT_ASSERT_MESSAGE: 行にコメントします。
for(j = 0; j < AMOUNT; j++)
{
#pragma omp parallel for
for(i = 0; i < 0x10000; ++i)
{
...
try
{
variable1 = func1();
variable2 = func2();
//CPPUNIT_ASSERT_MESSAGE("OLOLO", variable1 == variable2);
}
catch (const std::logic_error& exception)
{
std::cerr << exception.what() << std::endl;
//CPPUNIT_ASSERT_MESSAGE("OLOLO", 0);
}
catch (const std::runtime_error & exception)
{
std::cerr << exception.what() << std::endl;
//CPPUNIT_ASSERT_MESSAGE("OLOLO", 0);
}
}
}
そして、それは私が必要とする方法で機能します。しかし、間違った結果の場合に情報を出力するには、CPPUNIT_ASSERT_MESSAGE が必要です。CPPUNIT_ASSERT_MESSAGE がエラーを引き起こす理由と、これらのエラーを取り除くにはどうすればよいですか。