170 похожих чатов

Я не знаю есть ли чат по СИ, но задам

тут вопрос, может кто знает: можно ли в си на этапе компиляции вычислить значения функции? Параметры константные.

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

31 ответов

31 просмотр

1. Да, если включить оптимизацию. Но нет гарантий, что это произойдёт. 2. Если это функция этапа компиляции (шаблон), то да. 3. Ссылка на группу Си https://t.me/joinchat/Iw5x10-gFWVZyj-C8uBtig

Томас, что с тобой стало….

Последняя редакция несколько меняет смысл. Предлагаю посмотреть, можно ли с использованием шаблонов посчитать результат функции на этапе компиляции.

А это вы или клон-фейк?

Alexander Pshenichnikov
А это вы или клон-фейк?

Это настоящая, у настоящей ник linuxNyasha

пс, посоны, это не флудилка

Дмитрий
А кто это

Уничтожитель флудилки

сделать codegen?

Ну или кодогенерация, или плюсы.

²
сделать codegen?

Не очень вариант, конечно. Но и плюсы тащить не хочется 🤯

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

Стикер

Ну или пищи на с++

GNU/Линуксяша-libre
А плюсы чем не нравятся?

Нравятся, но мне для микроконтроллера, хочется попроще делать

Томас Шелби🇷🇺 (Ярополк🌞)
Нравятся, но мне для микроконтроллера, хочется поп...

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

Томас Шелби🇷🇺 (Ярополк🌞)
Нравятся, но мне для микроконтроллера, хочется поп...

Если есть возможность использовать С++ для микроконтроллера, зачем мучиться с Си? Тебе всё равно будет доступно только подмножество С++, но с его преимуществами по сравнению с Си.

GNU/Линуксяша-libre
Ну так за счёт вычислений этапа компиляции можно м...

Тут надо начинать с того, какой контроллер и какой под него есть компилятор. А то сейчас окажется, что icc 15 года с C++03.

Alexander "Ternvein" Isaev
Тут надо начинать с того, какой контроллер и какой...

Ну МК stm32f103 тот что на борде "синяя таблетка" идёт

Ничего плохого в том что бы вычислить их в рантайме 1 раз нет

Но если все же это нужно. То в си для этого берут кодогенерацию. И генерят код на си. Подставляя значения

Томас Шелби🇷🇺 (Ярополк🌞)
Не очень вариант, конечно. Но и плюсы тащить не х...

https://dev.to/thorx86/compile-time-hash-in-plain-c-not-only-c-is-now-possible-468d php для препроцесса, смішно і грішно

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Good afternoon, I just started learning php in conjunction with mysql. I am registering a system on a local Mamp server using phpMyAdmin. It seems to be stored normally in the...
ManGo
1
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Добрый день! Такая проблема возникла, написал код на Python, который компилирует, собирает и запускает файлы .s А в случае работы нужно то же самое делать для .asm Чем эти фа...
A Mori
5
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Карта сайта