Ответ 1
...
- это расширение, предоставляемое GCC
https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html#Designated-Inits
Чтобы инициализировать диапазон элементов для одного и того же значения, напишите
[first ... last] = value
. Это расширение GNU. Например,int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
&&
является еще одним расширением
https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html#Labels-as-Values
Вы можете получить адрес метки, определенной в текущей функции (или содержащая функция) с унарным оператором
&&
. Значение имеет типvoid *
. Это значение является константой и может использоваться везде, где константа этого типа действительна. Например:void *ptr; /* ... */ ptr = &&foo;