我正在使用聚合初始化程序为单元测试设置一块静态数据。
我想使用数组大小作为预期的元素数量,但如果提供的初始化程序太少,这可能会失败:
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 点的编译时保证,所以这会从所提供值的数组末尾结束并进入默认初始化值。
我可以在编译时以某种方式强制执行聚合数组初始值设定项的数量吗?