Size: a a a

2021 August 31

h

hold3r in Embedded Group
Возможно во втором случае сначала выполнится local.microseconds * 1000000, произойдет переполнение и в итоге получится 0. Но это не точно.
источник

AJ

Arm Jedi in Embedded Group
ну так оно и есть. Из-за последовательность операций происходит переполнение. Но я надеялся что сразу вычислится значение 32 и потом уже оно везде будет подставляться или можно как-то принудительно заставить это сделать
#define   OCR_VAL      ((F_CPU/256)-1)

#define  TICK_MCSEC   (1000000 / (OCR_VAL+1))
источник

h

hold3r in Embedded Group
const tick_usec = TICK_MCSEC
источник

h

hold3r in Embedded Group
Т.е. ты хочешь сказать, что в коде
int x = 2;
int y = x * 3 / 2
y должен быть равен 2 ?
источник

AJ

Arm Jedi in Embedded Group
Последовательность операций то
источник

h

hold3r in Embedded Group
У тебя в выражении есть неизвестные препроцессору переменные, так что он просто заменит TICK_MCSEC  на  (1000000 / (OCR_VAL+1)) и пойдёт дальше
источник

ED

Electronics Designer in Embedded Group
Сначала выполняется текстовая подстановка, и только потом оптимизация по вычислению констант.
источник

ED

Electronics Designer in Embedded Group
Препроцессор выполняет только подстановку, а константы вычисляет компилятор на этапе анализа AST.
источник

ED

Electronics Designer in Embedded Group
Первое после препроцессора раскроется в

1000000 / (OCR_VAL+1) * local.microseconds

а второе - в

local.microseconds * 1000000 / (OCR_VAL+1)

- ровно так. Компилятор на этапе разбора увидит буквально такой текст.
источник

ED

Electronics Designer in Embedded Group
Потому, кстати, хорошая идея брать ВСЕ определения в скобочки, если только это не одно число.
источник

DF

Dollar Føølish in Embedded Group
все дефайны ага
источник

ED

Electronics Designer in Embedded Group
Да. Еще раз обращу внимание, что препроцессор ничего не вычисляет и не анализирует семантику получившегося. Он просто меняет одни блоки текста на другие.
источник

AJ

Arm Jedi in Embedded Group
Спасибо -). Я хотел еще для проверка выводить при компиляции эти константы для проверки но увы.. Хотя препроцессор вычисляет если есть условия
источник

AJ

Arm Jedi in Embedded Group
Не. Тут все константы только раньше задефайненые
источник

АГ

Александр Гравит... in Embedded Group
ну конечно можешь. имеешь право. и даже скорее ты молодец. показываешь себя. да и, почестному. пока много таких как ты, мы выглядим крайне хорошо и можем получать много заказов и выбирать и повышать цену на них. так что ты нужный товарисщ. просто привыкай к мысли что придется жить в нищете и нужде в финале, или даже в середине кино..
источник

AK

Anton Kirilenko in Embedded Group
т.е. ему можно быть школотой, а мне нельзя быть расистом!?
источник

AK

Anton Kirilenko in Embedded Group
@Leopoldius , что за фигня!?
источник

LZ

Leonid Zaliubovskii in Embedded Group
Это другое (с) 😁

Да кто же тебе запретит то. Ну баном прилетит наверное, как и тому о ком ты говоришь. Если палку перегнете. КМК

Но я не админ или модератор, откуда же я знаю
источник

AK

Anton Kirilenko in Embedded Group
карочи не любите вы меня ежедневно
источник

IN

ISAK Neuman in Embedded Group
хорош, уделал того кто месяц начал изучать.
источник