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