J'utilise un initialiseur agrégé pour configurer un bloc de données statiques pour un test unitaire.Puis-je provoquer une erreur de compilation sur "trop peu d'initialiseurs"?
Je voudrais utiliser la taille du tableau que le nombre prévu d'éléments, mais cela peut échouer si trop peu initialiseurs sont fournis:
my_struct_type expected[14] =
{
{ 1.234, 0, 'c' },
{ 3.141, 1, 'z' },
{ 2.718, 0, 'a' }
};
Cela donne aucune erreur du compilateur dans Visual Studio 2008.
Je voudrais pouvoir l'utiliser comme tel:
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);
}
mais parce que je n'ai pas une garantie de compilation de 14 points, ce ruisseler le
e nd du tableau
fin des valeurs fournies et dans les valeurs initialisées par défaut. Puis-je d'une certaine manière appliquer le nombre d'initialiseurs de tableaux agrégés au moment de la compilation?
J'ai aimé @ réponse de Potatoswatter pour sa nouveauté, mais le vôtre est le plus pragmatique et applicable sans toucher à mes structures existantes. – mskfisher