Войти
ФлеймФорумПрограммирование

Имеет ли смысл вводить следующие изменения в С? (3 стр)

Страницы: 1 2 3 4 513 Следующая »
#30
13:56, 6 мая 2019

1 frag / 2 deaths
> Дык я грю, одинаковые тип элемента и следующих полей, там выравнивать нечего.
Ну а какая разница делать паддинг только для попадания в кратный адрес или еще и паралельно чтобы оставить контрольную зону?

kipar
> Чужой то код не начнет эту библиотеку использовать.
Ну другой то программист не начнет и новый язык использовать.

> А так да, запретить использовать квадратные скобки и сделать вместо них get и
> set видимо вариант
Ну да, там где это нужно так и делают. По другому пока на практике не взлетает. Хотя сами по себе идеи не новы. Причем не только касаемо доступа к памяти но и типизации и все остального.

> правда код совсем по уродски будет смотреться
Ну это уже дело привычки и необходимости.


#31
13:59, 6 мая 2019

exchg
> Ну а какая разница делать паддинг только для попадания в кратный адрес
Блин, я привёл пример, где адрес кратный и без паддинга, а значит, по стандарту расположение полей фиксировано и красную зону втыкать некуда.

#32
14:25, 6 мая 2019

Вообще, в теории, можно запихивать тег в неиспользуемые биты указателя (более применимо к 64 битным архитектурам) и плясать
https://arxiv.org/pdf/1802.09517.pdf
Сейчас это используется, чтобы различать указатели между разными malloc, но в теории можно и между разными членами структур

#33
(Правка: 14:34) 14:27, 6 мая 2019

1 frag / 2 deaths
> а значит, по стандарту расположение полей фиксировано
Покажи стандарт, я честно такого не помню, выравнивание полей на усмотрение компилятора вроди как. Ну и как миниум __attribute__ ( (aligned()) ) говорит о том, что если нада я могу  руками ровнять даже равно размерные поля.

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

#34
14:35, 6 мая 2019

exchg
> Покажи стандарт, я честно такого не помню, выравнивание полей на усмотрение
> компилятора вроди как.
А как тогда в АПИ передавать структуры?

#35
14:39, 6 мая 2019

1 frag / 2 deaths
> А как тогда в АПИ передавать структуры?
Ровно также как и сейчас. Очевидно что они должны быть одинаковый и на стороне отправителя и на стороне получателя. Т.е. придется собирать и свой код и стороннюю библиотеку в режиме отладки.

#36
15:02, 6 мая 2019

exchg
> и стороннюю библиотеку
kernel32.dll пересобирать - это как?

#37
(Правка: 15:18) 15:15, 6 мая 2019

1 frag / 2 deaths
> kernel32.dll пересобирать - это как?
Пользователи виндовс должны страдать.

Но а если без шуток, то другого варианта нету. Если играть падингом то только с двух сторон. Ну или как варинат не трогать структуры которые уходят наружу. В данном случае можно пофантазировать, что можно скачать уже дебажную сборку с сайта производителя, но про страдания я уже говорил выше. )

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

#38
15:18, 6 мая 2019

exchg
> Но а если без шуток, то другого варианта нету.
Если без шуток, то размещение полей в структуре трогать просто так нельзя.

#39
(Правка: 15:20) 15:20, 6 мая 2019

1 frag / 2 deaths
> трогать просто так нельзя.
Это крестопроблемы. Тут все просто так и все можно, окромя дела и разума.

#40
15:22, 6 мая 2019

Zefick
> Весь код на Си сломается уже после первого пункта.
Я как раз про это и написал в первом комментарии.

#41
(Правка: 15:38) 15:34, 6 мая 2019

1 frag / 2 deaths
> Если без шуток, то размещение полей в структуре трогать просто так нельзя.
А вот это типичное опровержение утверждения которое сам же сделал. Т.к. в данном случае не просто так, а с целью встраивания различных инструментальных средств. ))) И это встраивание естественно наложит некоторые ограничения.

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

#42
(Правка: 19:46) 19:38, 6 мая 2019

9K720, по поводу:

Ну предположим ввели всю твою бредятину. Дальше что? У твоего стороннего софта сразу станет чистый понятный тебе код?

Нет, конечно. Сторонний софт существующий на данный момент врядли кто-то станет переписывать. Но новый написанный код думаю станет понятней (это касательно строк и конвенции по именаваниям). А насчет первых пяти пунктов, после всех комментариев, я не уверен. Во всяком случае, как я понял - перегрузка функций, увы, точно сломает обратную совместимость.

#43
19:51, 6 мая 2019

Bakuard
Покажи хоть примеры, на что жалуешься.

#44
19:52, 6 мая 2019

Bakuard
> сломает обратную совместимость
Гораздо страшнее идеологическая несовместимость. C - это язык, имеющий совершенно отличную от C++ цель. И пишут на нем совершенно иначе. "Что для C хорошо, для C++ - смерть" и наоборот.

Страницы: 1 2 3 4 513 Следующая »
ФлеймФорумПрограммирование