The OpenNET Project / Index page

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



"Выпуск языка программирования Rust 1.40"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Выпуск языка программирования Rust 1.40" +/
Сообщение от anon2 (?), 26-Дек-19, 17:01 
> Ничего такой кастинг не нарушается, значит когда память аллоцируешь и приводишь ее
> к нужному тебе типу с помощью указателя так это видите ли
> нормально, а когда массив плохо?

Когда память аллоцируешь, у malloc есть специальный атрибут __attribute__((malloc)), который подсказывает компилятору, что возвращаемую память можно кастить к любому типу и проблем со strict aliasing не будет.

Массив или другой объект это не важно. Важен тип объекта.

> Для указателя абсолютно фиолетово с каким
> типом работать,

Ага, только вдруг с новым компилятором ломатся код, работающий годами.
А читать про strict aliasing вам лень.
Ну вот хотя бы 3-я ссылка в гугле: https://habr.com/ru/post/114117/

> привет void*,

А для void*, как и для char* сделали исключение :)


Интересный пример про string aliasing (из https://stackoverflow.com/questions/2958633/gcc-strict-alias...):

unsigned long a;
a = 5;
*(unsigned short *)&a = 4;

- компилятор может выкинуть последнее присвоение, т.к. ему понятно, что указатель unsigned short * ну никак не может указывать на переменную a, ведь её тип - unsigned long.


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

ну это про стилистику, как отличить программиста на C от программиста на C++ :)

> Вся соль в том, что из таких багофич C/C++ состоит чуть менее
> чем полностью

Полностью согласен.

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

Оглавление
Выпуск языка программирования Rust 1.40, opennews, 23-Дек-19, 11:53  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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