Ответ 1
Это назначенный инициализатор, который является синтаксисом, добавленным для C99.
глядя на источник ядра linux, я нашел это:
static struct tty_operations serial_ops = {
.open = tiny_open,
.close = tiny_close,
.write = tiny_write,
.write_room = tiny_write_room,
.set_termios = tiny_set_termios,
};
Я никогда не видел таких обозначений в C. Почему перед именем переменной есть точка?
Это назначенный инициализатор, который является синтаксисом, добавленным для C99.
Он иногда называется "назначенной инициализацией". Это дополнение к C99, хотя некоторое время оно было расширением GNU.
В списке каждый .
называет член структуры для инициализации, так называемый обозначение.