Dimon456 писал(а):есть не большое отличие EmBitz от моего компилятора
EmBitz это не компилятор а IDE. В ней используется GCC.
Судя по логу у вас не самая свежая версия. В GCC 4.8 насколько помню были проблемы с LTO. Не помешало бы обновится до текущей версии GCC 9.3.
Dimon456 писал(а):вот и код получился больше, видимо добавил больше чем нужно
Многое зависит от опций сборки. Попробуйте собрать с -Os и -flto.
Желательно использовать текущую версию GCC.
Тут по ходу разбора чужого кода вопрос возник. Есть какой-то практический смысл в использовании типа bool в Си? Вроде экономии памяти или скорости выполнения операций. В IAR для использования этого типа нужно подключить файл stdbool.h. Заглянул я в файл, но ничего не понял в этих ifndef __cplusplus и #define __bool_true_false_are_defined 1. Что-то ужасное произойдет, если заменить bool на char или int?
[uquote="Asmodey",url="/forum/viewtopic.php?p=3929170#p3929170"]Есть какой-то практический смысл в использовании типа bool в Си? Вроде экономии памяти или скорости выполнения операций. В IAR для использования этого типа нужно подключить файл stdbool.h.[/uquote]
В C2x bool/true/false наконец станут ключевыми словами и хедеры подключать будет не нужно. А смысл не в экономии, а в выразительности и лучшей защиты от возможных ошибок.
Asmodey писал(а):Тут по ходу разбора чужого кода вопрос возник.
Нет, просто эффективность компилятора.
И пока EmBitz проигрывает во всем, самое главное не умеет строит "зависимости", что бы открыть функцию в другом файле, мне приходится слева выбрать файл с функцией, а если их куча файлов приходится каждый перещелкать пока найдешь нужный, либо очень очень "умную голову" иметь, что бы в памяти все это держать.
Не так - проверяется всего один бит, или всё число на ноль. А размер может быль любым. В частности при возврате параметра в arm системе - это всегда регистр ядра, то-есть 32 бита. И всего два состояния ответа - команда успешна или нет.
Другое дело логические операции с bool, особенно с промежуточным хранением в структуре. Тут вообще нет экономии ни в размере памяти, ни в логическом наглядном применении. В этом случае bool значительно проигрывает перечислению. Гораздо приятнее видеть не просто факт сбоя, но тип ошибки.
EmBitz не знаю "зависимости", есть область видимости. Если хидер подключен к файлу - то его функции имеют режим авто_дополнения, а так-же видны в коленке с лева. Просто не нужно к майну подключать абсолютно всё, каша получится.
Dimon456 писал(а):Нет, просто эффективность компилятора.
И пока EmBitz проигрывает во всем
Как уже писал EmBitz это IDE. Она может использовать различные компиляторы в том числе GCC и компилятор кейла. Я использую текущую версию GCC 9.3.
Dimon456 писал(а):что бы открыть функцию в другом файле, мне приходится слева выбрать файл с функцией, а если их куча файлов приходится каждый перещелкать пока найдешь нужный
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3928913#p3928913"]А редактор с подсветкой синтаксиса будет мне автодополнения разных членов структур, переменных и т.п. показывать? И на лету статанализатором ошибки проверять?[/uquote]
Будет, но качество сильно зависит от редактора и стиля написания Например, можно без проблем скомпилировать такой код:
У TIM5 RCR нет вообще, у TIM16 он 8-ми битный, разрядность для TIM1 может быть 8/16 бит, в зависимости от серии, но в данном случае мы не получим даже предупреждения. А в таком случае получим предупреждение и ошибку:
Реализовано довольно таки просто, на иероглифах Спойлер
[uquote="Мурик",url="/forum/viewtopic.php?p=3928944#p3928944"]Зачем Makefile? IDE его не использует. Для компиляции, прошивки и отладки он не нужен.[/uquote]
Мне просто нечего сказать. Это - вообще дегенерация какая-то что ли?
Добавлено after 1 minute 16 seconds:
[uquote="VladislavS",url="/forum/viewtopic.php?p=3928958#p3928958"]Добавил файлы в проект, задал параметры сборки хоть для каждого файла в отдельности, скомпилировал, отладил, прошил и отправил проект в архив. Всё в одной среде без танцев с бубном.[/uquote]
Вот, что и требовалось доказать: полная дегенерация. Абсолютное отсутствие контроля со стороны разработчика…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3929267#p3929267"]Абсолютное отсутствие контроля со стороны разработчика…[/uquote]Наоборот, полный контроль. Покажи мне makefile в котором для каждого файла можно задать свои параметры компиляции. Слабо?
PS:
А запульнуть прошивку сразу на SPI-флэшку, откуда она будет грузиться загрузчиком? А загрузить и отлаживать её с того места, куда её штатно загрузчик подгружает? А подключиться к работающей программе "на лету" и подсмотреть состояние любого регистра? А инициализировать SDRAM перед загрузкой в неё отлаживаемой прошивки? И ещё много того, что тебе даже не снилось. Ответ я знаю - ТЕБЕ НЕ НАДА.
Добавлено after 1 hour 35 minutes 4 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3928913#p3928913"]т.к. мне нужно видеть весь выхлоп make'а в нормальном виде.[/uquote]Только вот понятие "в нормальном виде" у тебя какое-то ненормальное. Зачем смотреть на вывод 100500 строк с кучей параметров компиляции для файлов, скомпилированных без ошибки? IDE мне всё это спрячет и покажет только ошибки и предупреждения. Ну и финальную статистику. Это сильно упрощает и ускоряет мою работу. Даже секунды, потраченные на переключение в терминал и запуск make это время, украденное у меня.
Добавлено after 1 hour 13 minutes 7 seconds:
[uquote="Reflector",url="/forum/viewtopic.php?p=3929223#p3929223"]Реализовано довольно таки просто, на иероглифах [/uquote]А в данном примере если info без static объявить, скомпилируется? Ведь она в статическом методе фактически не используется (скорее всего в других используется), а только в концепте. И метод так и просит inline. Компилятор, конечно, разберётся сам, но для наглядности