В ядре Linux, я вижу декларацию массива структур, который выглядит, как этотC массив структур декларации
struct SomeStructName [] ={
[SOMEWEIRD_NAME] = {
.field1 = "some value"
},
[SOMEWEIRD_NAME2] = {
.field1 = "some value1"
},
}
Я никогда не видел заявление, как это, в частности, я не могу понять, что [SOMEWEIRD_NAME]
означает, и почему он используется.
Это расширение GNU для [назначенных инициализаторах] (https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html). – Kninnug
@Kninnug это не расширение GNU, оно действительно C99 – ouah
@ouah Я думал, что C99 разрешает синтаксис '.field'. Кажется, я ошибался, хотя GCC имеет некоторый дополнительный синтаксис не в стандарте. – Kninnug