Re[20]: Наследие Си
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 20.09.25 08:21
Оценка: :)
Здравствуйте, so5team, Вы писали:

ЕМ>>>>привести указатель на float к указателю на unsigned int, чтоб извлечь внутреннее представление плавающего числа?

S>>>С++ это и не позволяет.
ЕМ>>Как, и с каких пор?
S>Со времен C++98. Здесь можете посмотреть раздел 3.10.15.

Во-первых, там речь об lvalue, а для того, о чем писал я, достаточно rvalue.

Во-вторых, не вижу там характерных слов, вроде "impossible", "unsupported", "not implemented" и подобных. Возможно, недостаточно знаю английский.

В-третьих, до низкого уровня, слава богу, [пока] не добралась модная традиция "стерильного программирования", требующая, чтобы исходники какого-нибудь начального загрузчика гарантированно собирались у любого дятла, сумевшего их раздобыть вместе с компилятором соответствующего стандарта языка. Там это совершенно не нужно, и вряд когда-нибудь станет.

S>>>Эта частность под запретом.

ЕМ>>Как, с каких пор?
S>ЕМНИП, всю жизнь.
S>За подробностями сюда: https://stackoverflow.com/a/11996970

Опять же не вижу в стандартах и документации характерных слов, вроде "prohibuted", "not allowed" , "disabled", "illegal" и т.п.

S>За 30 лет практического применения C++ я написал туеву хучу кода, который работал на самых разных платформах и компиляторах. И тема ABI передо мной вообще никогда не вставала. В отличии от вопросов о соответствии стандарту и поведению одного и того же кода в разных условиях.


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

S>Вы хотели определение -- вы его получили.


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

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

S>Если это определение (соответствующие действительности для тех же C и C++) рвет вам шаблоны и рушит картину мира


Не, препроцессоры C/C++ у меня вызывают лишь чувства брезгливости и стыда за разработчиков языков. Если убожество препроцессора C еще можно понять (малые машины, ограниченные ресурсы, непонятные перспективы языка и т.п.), то его точное копирование в C++ уже за пределами моего понимания. Что ж, они хотели избежать ада макросов — получилп ад шаблонов, и до сих пор делают вид, будто это случилось внезапно.

А такое случается со всей без исключения искусственно ограниченной функциональностью. Я вот сам на командном языке винды порой пишу такое, что самому рыдать хочется, но перенести сразу все рабочее хотя бы на PowerShell (который тоже ужасен) никак руки не дойдут.

S>Дайте ссылку на какое-либо другое определение макро-процессора


Ну вот Вам от Алисы, по запросу "определение встроенного макропроцессора":

Встроенный макропроцессор — это программа, которая встроена в другую программу (например, компилятор, ассемблер) и выполняет систематическую замену текста на основе макросов. Макрос — это средство замены строки на другую, полученную из исходной по заранее заданным правилам.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.