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

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

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

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

31 ответов

52 просмотра

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 для препроцесса, смішно і грішно

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта