集約初期化子を使用して、単体テスト用の静的データのブロックを設定しています。
予想される要素数として配列サイズを使用したいのですが、提供される初期化子が少なすぎると失敗する可能性があります。
my_struct_type expected[14] =
{
{ 1.234, 0, 'c' },
{ 3.141, 1, 'z' },
{ 2.718, 0, 'a' }
};
これにより、Visual Studio 2008 でコンパイラ エラーは発生しません。
私はそれを次のように使用できるようにしたいと思います:
const unsigned expected_size = sizeof(expected) / sizeof(my_struct_type);
BOOST_CHECK_EQUAL(points.size(), expected_size);
for( int i = 0; i < expected_size; i++ )
{
BOOST_CHECK_EQUAL(points[i].value, expected[i].value);
BOOST_CHECK_EQUAL(points[i].count, expected[i].count);
BOOST_CHECK_EQUAL(points[i].sym, expected[i].sym);
}
しかし、14 ポイントのコンパイル時の保証がないため、これは、提供された値の配列の終わりから、デフォルトで初期化された値に入ります。
コンパイル時に集約配列初期化子の数を強制することはできますか?