2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
1 | |
Причины отсутствия flexible array member в плюсах11.07.2017, 21:54. Показов 6384. Ответов 7
Метки нет (Все метки)
Очень простой вопрос - с чем связанно отсутствие flexible array member в стандарте плюсов? При том что и gcc, и VS прекрасно кушают поля вида int data[].
Предупреждая ответ "потому что есть std::vector" - он далеко не бесплатен. Во-первых, лишний раз дергается динамическая память, один раз для создания объекта и еще раз для создания его массива. Во-вторых, нужны дополнительные указатели чтобы связать объект и массив вместе. В-третьих, тащить целую библиотеку чтобы тупо реализовать то, что в Си делается нативно... И да, понятно что если официально разрешить flexible array member, то будут некоторые проблемы с наследованием от класса его использующего. Но здесь можно просто оговорить что наследник не должен добавлять никаких полей не относящихся к тривиальным типам. И что доступ к этим полям одновременно с доступом к flexible array member ведет к UB (поля добавляются только чтоб зарезервировать место под flexible array member).
0
|
11.07.2017, 21:54 | |
Ответы с готовыми решениями:
7
GCC flexible array member Flexible array member not at end of struct Найти причины и способы исправления ошибки: Error - member access into incomplete type 'Node' Invalid use of member in static member function |
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
|
||||||
12.07.2017, 02:49 | 2 | |||||
Ну, вы всегда можете сделать так:
0
|
Заблокирован
|
|
12.07.2017, 02:50 | 3 |
DevAlone, тут размер задаётся статически.
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
||||||
12.07.2017, 03:10 [ТС] | 4 | |||||
Нет, я всегда могу сделать так:
0
|
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
|
||||||
12.07.2017, 03:29 | 5 | |||||
daun-autist, тогда так:
Добавлено через 5 минут эмм, а что дают два alignas подряд? Добавлено через 2 минуты И как при этом задать размер не во время компиляции?
0
|
Заблокирован
|
|
12.07.2017, 03:34 | 6 |
Назначение flexible array members — (дать возможность) задавать размер в рантайме.
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
||||||
12.07.2017, 03:39 [ТС] | 7 | |||||
Компилятор в этом случае выбирает самое крупное выравнивание из предложенных. То есть, чтоб хватило и size_t, и double. en.cppreference.com пугает что если alignas будет пытаться ослабить "естественное" выравнивание структуры, программа будет считаться ill-formed.
Так весь сыр-бор именно ради того чтобы все было одним куском.
1
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|
12.07.2017, 07:46 | 8 |
тут обсуждалось может подойдет
GCC flexible array member
0
|
12.07.2017, 07:46 | |
12.07.2017, 07:46 | |
Помогаю со студенческими работами здесь
8
По поводу Flexible Least Squares Создать mouseover effect для картинки с flexible grids Импорт проекта SIMATIC STEP7 WINCC flexible в TIA PORTAL V11 БД в плюсах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |