#cpp #c
Пишу на C++. Случайно наткнулся на такой код, хотелось бы узнать что здесь происходит
и можно ли такое повторить на C++.
static struct pci_driver my_driver = {
.name = "my_pci_driver",
.id_table = my_driver_id_table,
.probe = my_driver_probe,
.remove = my_driver_remove
};
И еще - зачем перед объявлением экземпляра структуры в C нужно указывать ключевое
слово struct, а в C++ - нет?
Ответы
Ответ 1
И еще - зачем перед объявлением экземпляра структуры в C нужно указывать ключевое слово struct, а в C++ - нет? С и С++ - разные языки с разными правилами. хотелось бы узнать что здесь происходит Это синтаксис инициализации с тегами (tagged initializers), введенный в язык С в стандарте С99. Что именно там происходит по-моему довольно очевидно: вы явно указываете какой член структуры хотите инициализировать каждым значением, тем самым делая инициализатор независимым от порядка объявления полей в структуре. можно ли такое повторить на C++ C++ пока не поддерживает синтаксис инициализации с тегами, и прямого аналога на уровне ядра языка нет. Если я не ошибаюсь, поддержка этого синтаксиса в некоей модифицированной/урезанной форме - в планах для C++20. Ранее предложения поддержки этого синтаксиса в С++ упорно отвергались комитетом из-за сопутствующих сложностей, возникающих в контексте С++ инициализации.Ответ 2
Компилятор g++ вполне позволяет так писать на с++. Но это является расширением языка и не входит в стандарт.
Комментариев нет:
Отправить комментарий