-
- Перевел почти всё на float, но есть неожиданная засада: в функцию с
переменным числом параметров передается два float. Ругается на оба
параметра, внутри функции double не используется. - VLLV(04.07.2024 11:01)
- А зачем делать функцию с переменным числом параметров? Всегда
такого избегаю, во встраиваемых системах... Ругается как? "implicit
conversion from float to double"? Nikolay_Po(125 знак., 04.07.2024 11:38)
- 1. Я тоже избегаю, как и, например, разыменованных указателей. Но
люди пользуются. Вот и тут, протокол сложный, коллега впендюрил.
2.да - VLLV(04.07.2024 12:14)
- Пример кода, на который жалуется компилятор? - Nikolay_Po(04.07.2024 13:25)
- Зачем пример кода? В правилах языка Си написано, что при вызове
функции с переменным числом параметров float будет приведён к
double. Дело на одну трубку. - SciFi(04.07.2024 13:27)
- Хоть по описанию случая ТС и подозревал, но не знал. Спасибо! - Nikolay_Po(04.07.2024 15:21)
- Стыдно, но вот ради этого я и хожу сюда! - VLLV(04.07.2024 14:43)
- Ничоси подставы. - ASDFS(04.07.2024 14:09)
- Угу. Единственный предсказуемый язык, Виртовский Паскаль - не прижился. Все современные языки
больше напоминают прикол для фриков. С тонким, не всем понятным,
йумором и прочими "здесь так не принято". - Cкpипaч(04.07.2024 15:29)
- Русский язык тоже непредсказуемый. Шаг влево/вправо - и налетают
граммар наци со своими запятыми, "тся/ться" и прочими
непредсказуемыми глупостями. В книжку заглядывать не пробовали? Там
не так уж и много этих непредсказуемых правил. - SciFi(04.07.2024 15:37)
- Какую именно, книжку? Ожегова? Или мы про Си, С++, Python, Rust?
Если что, весь синтаксис и семантика Паскаля умещается на одну страничку. Даже если классы-методы
добавить. Cкpипaч(245 знак., 04.07.2024 19:04)
- Помещается потому что Паскаль умер до появления C89, C90, C99, C11,
C17. Иначе было бы так же. - VLLV(04.07.2024 23:17)
- и что с того? в свое время очень много писал на TP 5.5, все работало годами без проблем. было читаемо и отлаживаемо без бубна и зороастризма. да и сейчас можно написать много чего. - Alex68(05.07.2024 14:36)
- Умри вовремя - так учит Заратустра. - mr-x(05.07.2024 12:32)
- Ну Delphi (чем не паскаль) по бибилиотекам на годы опережал дотнет,
плюсы и прочее... он остановился в развитии на достаточно крутом
уровне - не нужно лучше. Всё новомодное, это пытка синтезировать
что-то (дабы нишу рынка занять) на базе того же паскаля. Что уже
говорит о порочности. - POV(04.07.2024 23:26)
- Вот именно. Тип переменной "auto"? Если ваш код не может без него обойтись, это довольно сомнительный код. - Cкpипaч(05.07.2024 14:30)
- Согласен. - Гyдвин(04.07.2024 23:56)
- Помещается потому что Паскаль умер до появления C89, C90, C99, C11,
C17. Иначе было бы так же. - VLLV(04.07.2024 23:17)
- Какую именно, книжку? Ожегова? Или мы про Си, С++, Python, Rust?
Если что, весь синтаксис и семантика Паскаля умещается на одну страничку. Даже если классы-методы
добавить. Cкpипaч(245 знак., 04.07.2024 19:04)
- Русский язык тоже непредсказуемый. Шаг влево/вправо - и налетают
граммар наци со своими запятыми, "тся/ться" и прочими
непредсказуемыми глупостями. В книжку заглядывать не пробовали? Там
не так уж и много этих непредсказуемых правил. - SciFi(04.07.2024 15:37)
- Угу. Единственный предсказуемый язык, Виртовский Паскаль - не прижился. Все современные языки
больше напоминают прикол для фриков. С тонким, не всем понятным,
йумором и прочими "здесь так не принято". - Cкpипaч(04.07.2024 15:29)
- Зачем пример кода? В правилах языка Си написано, что при вызове
функции с переменным числом параметров float будет приведён к
double. Дело на одну трубку. - SciFi(04.07.2024 13:27)
- Если коллеге оч. надо, может, сделать грязный хак? Перед передачей параметра в функцию преобразовать float в int с сохранением всех битов. А потом обратно. SciFi(204 знак., 04.07.2024 12:32)
- Пример кода, на который жалуется компилятор? - Nikolay_Po(04.07.2024 13:25)
- 1. Я тоже избегаю, как и, например, разыменованных указателей. Но
люди пользуются. Вот и тут, протокол сложный, коллега впендюрил.
2.да - VLLV(04.07.2024 12:14)
- А зачем делать функцию с переменным числом параметров? Всегда
такого избегаю, во встраиваемых системах... Ругается как? "implicit
conversion from float to double"? Nikolay_Po(125 знак., 04.07.2024 11:38)
- Не ваш-ли случай: Chip_n_Go(1 знак., 01.07.2024 20:22, ссылка)
- Да, эту ссылку в пустыне уже давали. Хороший обзор. - SciFi(01.07.2024 20:55)
- А объясните недалекому нах "double3 = (float) double1 * double2".
Умножаться будет все равно в доубле. Может надо так double3 =
((float) double1) *((float) double2); - IBAH(01.07.2024 18:51)
- Скорее всего спешка и небрежность программиста. Заработало ->
в продакшн. Хуже другое..очевидно, что нужно переводить во float, а
стрёмно - вдруг что- то сломается, не хватит точности. - VLLV(01.07.2024 19:15)
- зачем переводить? Дури не хватает цифру молотить? - ASDFS(01.07.2024 19:45)
- Планируется еще проект на CM0 по тем же исходникам, там дури
маловато. - VLLV(01.07.2024 23:03)
- Значит таки правда, повтор Ариан5. ASDFS(120 знак., 02.07.2024 00:19)
- Плавучесть фигня, вот доступ к полям упакованных и неупакованных
структур пострашнее будет - VLLV(02.07.2024 06:15)
- С GCC - вообще никаких проблем. Даже с "-O3 -flto". В объявлении
типа структуры пишешь __attribute__((packed)). При байтовом
доступе, делаешь из такой структуры союз с массивом байт
sizeof(structure_t). И всё работает автоматически. Даже размеры
нигде в явном виде подписывать не надо. Nikolay_Po(208 знак., 02.07.2024 08:31)
- Только времянки становятся х10. - ASDFS(02.07.2024 11:53)
- А какая разница? Обычно, упакованные структуры готовят для передачи
по интерфейсам связи, чья скорость на порядки ниже частоты
выполнения инструкций процессора. И увеличение времени доступа
из-за не выровненного доступа является осознанным. Nikolay_Po(564 знак., 02.07.2024 12:07)
- Правильный ответ такой: да хоть х100, у нас этих мипсов - куры не
клюют. Крохоборство до добра не доведёт! :-) - SciFi(02.07.2024 12:15)
- Вы еще оптимизацию отключите. Так ни каких мипсов не напасешься :) AlexBi(1 знак., 02.07.2024 12:19, youtube)
- А как её не отключать если хочется пошагово походить отладчиком. - POV(02.07.2024 15:49)
- Нехер пошагово шляться. Я вставляю "asm volatile ("NOP");" в нужном месте. Тогда появляется возможность привязать точку останова к конкретной команде ассемблера. Но и это может не сработать - может оказаться, что через это место код проходит и из других функций. В таком случае ставлю условие по смыслу, например: Nikolay_Po(466 знак., 02.07.2024 15:58)
- Кстати, частенько отключаю и не наблюдаю проблем. Зачем включал?
Видимо, шёл на поводу у народной молвы. Позорище! SciFi(3 знак., 02.07.2024 12:26)
- Ошибка выжившего ASDFS(40 знак., 02.07.2024 14:02)
- Можешь обзываться как хочешь, меня так просто не проймёшь :-) SciFi(72 знак., 02.07.2024 15:48)
- Пустынник пустынника зазря не обидит, все это развлекухи для а не по злому умыслу. ASDFS(88 знак., 02.07.2024 15:56)
- +1. У меня сначала реализуется основной функционал. Потом, если
хватает производительности - дополнительный, так называемые
"плюшки" - которые не являются обязательными, но могут быть
коммерческим преимуществом. Считаю нормой, когда ЦП и память
загружены процентов на 80 при полной оптимизации. Если меньше 50% -
значит, нужно что-то добавить или подразумевается развитие системы. - Nikolay_Po(02.07.2024 14:41)
- И тут я всё понял. ASDFS(93 знак., 02.07.2024 14:58)
- Под проект чип брался с небольшим запасом. Сделали. Ресурсы,
благодаря оптимизации, ещё остаются. Выгоды от снижения
производительности МК нет (расходы на перепроектирование под более
дешёвый МК не окупятся). Зачем добру пропадать? - Nikolay_Po(02.07.2024 17:35)
- Слова Билли "наше всё" Гейца про 640к начинают играть новыми красками. ASDFS(114 знак., 02.07.2024 17:48)
- Под проект чип брался с небольшим запасом. Сделали. Ресурсы,
благодаря оптимизации, ещё остаются. Выгоды от снижения
производительности МК нет (расходы на перепроектирование под более
дешёвый МК не окупятся). Зачем добру пропадать? - Nikolay_Po(02.07.2024 17:35)
- И тут я всё понял. ASDFS(93 знак., 02.07.2024 14:58)
- Можешь обзываться как хочешь, меня так просто не проймёшь :-) SciFi(72 знак., 02.07.2024 15:48)
- Ошибка выжившего ASDFS(40 знак., 02.07.2024 14:02)
- А как её не отключать если хочется пошагово походить отладчиком. - POV(02.07.2024 15:49)
- Вы еще оптимизацию отключите. Так ни каких мипсов не напасешься :) AlexBi(1 знак., 02.07.2024 12:19, youtube)
- Правильный ответ такой: да хоть х100, у нас этих мипсов - куры не
клюют. Крохоборство до добра не доведёт! :-) - SciFi(02.07.2024 12:15)
- А какая разница? Обычно, упакованные структуры готовят для передачи
по интерфейсам связи, чья скорость на порядки ниже частоты
выполнения инструкций процессора. И увеличение времени доступа
из-за не выровненного доступа является осознанным. Nikolay_Po(564 знак., 02.07.2024 12:07)
- Только времянки становятся х10. - ASDFS(02.07.2024 11:53)
- Странные проблемы. Пахнет преждевременной оптимизацией. Это скользкая дорожка. - SciFi(02.07.2024 07:45)
- С GCC - вообще никаких проблем. Даже с "-O3 -flto". В объявлении
типа структуры пишешь __attribute__((packed)). При байтовом
доступе, делаешь из такой структуры союз с массивом байт
sizeof(structure_t). И всё работает автоматически. Даже размеры
нигде в явном виде подписывать не надо. Nikolay_Po(208 знак., 02.07.2024 08:31)
- Плавучесть фигня, вот доступ к полям упакованных и неупакованных
структур пострашнее будет - VLLV(02.07.2024 06:15)
- Значит таки правда, повтор Ариан5. ASDFS(120 знак., 02.07.2024 00:19)
- STM32L4 это Cortex-M4F, а он умеет float аппаратно, в отличии от double. - VladislavS.(01.07.2024 22:49)
- Планируется еще проект на CM0 по тем же исходникам, там дури
маловато. - VLLV(01.07.2024 23:03)
- зачем переводить? Дури не хватает цифру молотить? - ASDFS(01.07.2024 19:45)
- Скорее всего спешка и небрежность программиста. Заработало ->
в продакшн. Хуже другое..очевидно, что нужно переводить во float, а
стрёмно - вдруг что- то сломается, не хватит точности. - VLLV(01.07.2024 19:15)
- Думаю, в более новом компиляторе, просто по-умолчанию включили предупреждение о неявном приведении типа, или о неявном повышении типа, float to double promotion. Такое может съедать время/память, если исходно был задуман float. Вот и предупреждает. У меня в проектах с GCC нарочно включены такие предупреждения - чтобы флот был флотом, а дабл - только там, где надо. - Nikolay_Po(01.07.2024 18:27)
- Непонятно что хотели этим сказать. ASDFS(146 знак., 01.07.2024 18:20)
- Почему ругается понял - FPU одинарной точности, и компилятор из-за объявления переменных double вставляет библиотеку double вместо использования FPU. На хрена преобразование типа одного сомножителя? - Не знаю! :( - VLLV(01.07.2024 18:30)
- Допустим, этот же дабл передаётся по интерфейсу как флоат на другой
МК. И нужно, чтобы вычисления на обоих сторонах совпали. - Nikolay_Po(01.07.2024 18:29)
- Звучит как хорошая заявка на повтор падения Ариан-5. - ASDFS(01.07.2024 18:33)
- Вернется, но с потерями. Наверное это такая хитрая задумка :-) - il-2(01.07.2024 18:24)
- Не уверен что исполнение таких задумок не испортит оптимизация. - ASDFS(01.07.2024 18:28)
- Не испортит. Результат получится как указано. Просто лишнее будет
выкинуто. - Nikolay_Po(01.07.2024 18:30)
- Оптимист и оптимизатор? Это сила. - ASDFS(01.07.2024 18:35)
- Вот сколько ни пугали, и сколько ни пугался сам - всегда
оказывалось, что всё работает по стандарту, как надо. А если не
работает - значит, сам накосячил и оптимизация это лишь проявила.
Уже года четыре как использую полную оптимизацию Cortex-M3 + GCC, и
AVR-GCC. Ни в чём себе не отказываю, но с непредсказуемостью
исполняемого кода не сталкиваюсь. - Nikolay_Po(01.07.2024 18:44)
- Везет некоторым. ASDFS(63 знак., 01.07.2024 18:54)
- Слава Богу, в своё время нашел на сайте ARM компилятор для Cortex'ов. Понравился, правда, поначалу, у него LTO практически не работало. Nikolay_Po(192 знак., 01.07.2024 20:56)
- Везет некоторым. ASDFS(63 знак., 01.07.2024 18:54)
- Вот сколько ни пугали, и сколько ни пугался сам - всегда
оказывалось, что всё работает по стандарту, как надо. А если не
работает - значит, сам накосячил и оптимизация это лишь проявила.
Уже года четыре как использую полную оптимизацию Cortex-M3 + GCC, и
AVR-GCC. Ни в чём себе не отказываю, но с непредсказуемостью
исполняемого кода не сталкиваюсь. - Nikolay_Po(01.07.2024 18:44)
- Оптимист и оптимизатор? Это сила. - ASDFS(01.07.2024 18:35)
- Не испортит. Результат получится как указано. Просто лишнее будет
выкинуто. - Nikolay_Po(01.07.2024 18:30)
- Не уверен что исполнение таких задумок не испортит оптимизация. - ASDFS(01.07.2024 18:28)
- Перевел почти всё на float, но есть неожиданная засада: в функцию с
переменным числом параметров передается два float. Ругается на оба
параметра, внутри функции double не используется. - VLLV(04.07.2024 11:01)