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

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

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

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

31 ответов

48 просмотров

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

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
Карта сайта