тут вопрос, может кто знает: можно ли в си на этапе компиляции вычислить значения функции? Параметры константные.
Например у нас есть obd2 код: P104E, я его хочу закодировать в слово 0001000001001110 (2байта)
Вычислять константы в рантайме на микроконтроллере, я думаю плохая затея. Вот и хотелось бы это на этапе компиляции вычислить и подставить куда нужно
1. Да, если включить оптимизацию. Но нет гарантий, что это произойдёт. 2. Если это функция этапа компиляции (шаблон), то да. 3. Ссылка на группу Си https://t.me/joinchat/Iw5x10-gFWVZyj-C8uBtig
Томас, что с тобой стало….
В смысле?😄
Последняя редакция несколько меняет смысл. Предлагаю посмотреть, можно ли с использованием шаблонов посчитать результат функции на этапе компиляции.
А в сишке есть шаблоны?
нормальных - нету
А это вы или клон-фейк?
Это настоящая, у настоящей ник linuxNyasha
Это я. Фейк ник сменил
А у ненастоящей хуй.
пс, посоны, это не флудилка
Уничтожитель флудилки
сделать codegen?
Ну или кодогенерация, или плюсы.
Не очень вариант, конечно. Но и плюсы тащить не хочется 🤯
А плюсы чем не нравятся?
Напиши макрос, на нём вычислить значения, его же вставь в полную функцию.
Стикер
Ну или пищи на с++
Нравятся, но мне для микроконтроллера, хочется попроще делать
Ну так за счёт вычислений этапа компиляции можно много вычислений с рантайма убрать
Может ты и прав, надо попробовать
Если есть возможность использовать С++ для микроконтроллера, зачем мучиться с Си? Тебе всё равно будет доступно только подмножество С++, но с его преимуществами по сравнению с Си.
Тут надо начинать с того, какой контроллер и какой под него есть компилятор. А то сейчас окажется, что icc 15 года с C++03.
Ну МК stm32f103 тот что на борде "синяя таблетка" идёт
Ничего плохого в том что бы вычислить их в рантайме 1 раз нет
Но если все же это нужно. То в си для этого берут кодогенерацию. И генерят код на си. Подставляя значения
https://dev.to/thorx86/compile-time-hash-in-plain-c-not-only-c-is-now-possible-468d php для препроцесса, смішно і грішно
Обсуждают сегодня