ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
1060440 Топик полностью
fk0, легенда (13.12.2020 16:12, просмотров: 502) ответил POV_ на Да, именно оно. С reentrant всё заработало как надо.
reentrant функции нужны для другого, для случаев когда функции могут вызываться из биглупа и из прерываний одновременно, например. Делать все функции подряд reentrant из-за коллбэков не стоит, т.к. reentrant функции используют симулированный стек, который ограничен в размерах, работают медленно, генерируется большой объём кода и т.п. И вызов любой не-reentrant функции из reentrant функции вызывает рекурсивно те же проблемы. А всё подряд reentrant не сделаешь. reentrant это 

для "многозадачных" (биглуп и прерывания) функций и для рекурсивных функций (вроде qsort). Для остальных случаев нужно использовать OVERLAY.

https://www.keil.com/support/man/docs/c51/c51_le_reentrantfuncs.htm

[ZX]