The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Дискуссия об использовании языка C++ для разработки ядра Linux, opennews (??), 14-Янв-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


149. "Дискуссия об использовании языка C++ для разработки ядра Lin..."  +1 +/
Сообщение от Аноним (149), 15-Янв-24, 03:49 

a = {.x = 1, .y = 2};

Вот такой синтаксис завезли только в 20е плюсцы.
Ответить | Правка | К родителю #90 | Наверх | Cообщить модератору

240. "Дискуссия об использовании языка C++ для разработки ядра Lin..."  +/
Сообщение от _kp (ok), 15-Янв-24, 11:24 
>
 
> a = {.x = 1, .y = 2};
>

> Вот такой синтаксис завезли только в 20е плюсцы.

Ага.  А если не в исходнике было не {.x = 1, .y = 2, ...}, а в другом порядке { .y = 2, .x = 1, ...}, то надо править исходник, иначе не скомпилирует.

Ответить | Правка | Наверх | Cообщить модератору

363. "Дискуссия об использовании языка C++ для разработки ядра Lin..."  +3 +/
Сообщение от ДаНуНафиг (?), 15-Янв-24, 18:23 
Все правильно, ибо нефиг создавать ложное впечатление, есть же строгий порядок инициализации.
Ответить | Правка | Наверх | Cообщить модератору

469. "Дискуссия об использовании языка C++ для разработки ядра Lin..."  +/
Сообщение от _kp (ok), 16-Янв-24, 02:21 
> нефиг создавать ложное впечатление, есть же строгий порядок инициализации.

Если сам с нуля пишешь то обычно да, логичнее писать по порядку, но бывает используется препроцессор, когда изменяемую часть надо выделить, то порядок меняется.
И конечно уже существующие исходники.

Не забываем, что инициализацию структур только только добавили. И еще недавно можно было для больших структур делать или нечитаемую портянку, и как дурак считать каждый раз элементы, что б что то исправить, или мешать с и c++ файлы в проекте.
Шаг в сторону улучшения есть, что хорошо, но пока полумеры.

Ответить | Правка | Наверх | Cообщить модератору

643. "Дискуссия об использовании языка C++ для разработки ядра Lin..."  +/
Сообщение от ДаНуНафиг (?), 19-Янв-24, 16:38 
>> нефиг создавать ложное впечатление, есть же строгий порядок инициализации.
> Если сам с нуля пишешь то обычно да, логичнее писать по порядку,
> но бывает используется препроцессор, когда изменяемую часть надо выделить, то порядок
> меняется.

Все это прекрасно выделяется блоками комментариев. Не могу представить ситуации с перестановкой блоков инициализации, чтобы это выделить.

> И конечно уже существующие исходники.

В существующих исходниках ничего не поменяется. А если уж хочется их "освежить" подобной инциализацией, то можно же предварительный корректирующий коммит сделать.

> Не забываем, что инициализацию структур только только добавили. И еще недавно можно
> было для больших структур делать или нечитаемую портянку, и как дурак
> считать каждый раз элементы, что б что то исправить, или мешать
> с и c++ файлы в проекте.
> Шаг в сторону улучшения есть, что хорошо, но пока полумеры.

Для сложных случаев всегда можно было каждый инициализатор сопровождать маленьким блочным комментарием с имененем инициализируемого члена класса. Больше забот, но в сопровождении уж насколько проще. Хотя если разобраться, что в комментарии написать /* id */, что так написать .id=0  - практически один фиг ведь по количеству символов.

Ответить | Правка | Наверх | Cообщить модератору

646. "Дискуссия об использовании языка C++ для разработки ядра Lin..."  +/
Сообщение от _kp (ok), 19-Янв-24, 18:34 
> Все это прекрасно выделяется блоками комментариев.

Да это ж это же костылизм. Впрочем, сейчас оно уже в прошлом.

> Не могу представить ситуации с перестановкой блоков инициализации

Да легко. Переставили в какой ни будь библиотеке параметры в структуре, и что теперь собирающийся под разные варианты исходник корежить, и делать несколько его вариантов. А в embedded это не редкость, и при сборке под разные платформы тоже.
И туда же, как писал выше, генерация макросами.
И так же, заполнение не всех полей балластом, когда их много.


Ответить | Правка | Наверх | Cообщить модератору

672. "Дискуссия об использовании языка C++ для разработки ядра Lin..."  +/
Сообщение от ДаНуНафиг (?), 21-Янв-24, 07:41 
>> Не могу представить ситуации с перестановкой блоков инициализации
> Да легко. Переставили в какой ни будь библиотеке параметры в структуре, и
> что теперь собирающийся под разные варианты исходник корежить, и делать несколько
> его вариантов. А в embedded это не редкость, и при сборке
> под разные платформы тоже.
> И туда же, как писал выше, генерация макросами.
> И так же, заполнение не всех полей балластом, когда их много.

Ничего не понял про собирающего. Если у него были старые исходники, то у него все поля инициализировались в строгом порядке вообще без указания поля, например: a{0, 2, 3}. Даже если ему придет в голову самолично переключить стандарт компиляции на C++20, то этот же код соберется без проблем, по крайней мере в этой части.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру