Инициализация массива (в С++, но любое решение, которое работает для C, вероятно, будет работать и здесь) с меньшим количеством инициализаторов, чем с элементами, совершенно законными:
int array[10] = { 1, 2, 3 };
Однако это может быть источником неясных ошибок. Есть ли способ, чтобы компилятор (gcc) проверял количество инициализаций для одного конкретного массива и выдавал предупреждение или даже ошибку, если объявленный и фактический размер не совпадают?
Я знаю, что могу использовать int array[] = { 1, 2, 3 };
, а затем использовать статические утверждения, включающие sizeof(array)
, чтобы проверить мое ожидание. Но я использую array
в других единицах перевода, поэтому я должен объявить его с явным размером. Так что этот трюк не будет работать для меня.