Один из ответов на ваш связанный вопрос показывает единственный (определенный компилятором c) способ, которым я знаю, чтобы сократить инициализацию:
char a[10][8] = { [0 ... 9] = {"default"} };
Это расширение G CC, задокументированное под обозначенными инициализаторами .
Обратите внимание, что пробел перед нотацией ...
является обязательным; в противном случае у вас есть литерал с плавающей точкой 0.
(из-за правила 'maximal munch'), который нельзя использовать в качестве нижнего индекса. Пространство после этого симметрично c, хотя не является строго необходимым. (Я удивлен, что они не выбрали что-то вроде двоеточия :
для разделения чисел - не было бы никакой опасности путаницы, поскольку единственные другие точки, которые появляются в двоеточиях, - после меток или в троичном операторе ?:
, которые здесь явно не актуальны. Я также разочарован тем, что подобное не было добавлено в C99 - или позже - как часть назначенной функции инициализаторов. В конце концов, в Fortran 66 (он же Fortran IV) был механизм для повторения «инициализаторов» !)