Цитата(Drozd2 @ Jul 9 2011, 01:15)

Как попросить этого товарища на этапе компиляции хотя бы предупреждать о возможном переполнении стека?
Никак, компилятор этого не умеет. Тем более что это не просто сделать даже в ручную. Тут надо найти в программе место, где могут быть наиболее глубоко вложены друг в друга подпрограммы или функции. И тоже самое отдельно для кода в обработке прерываний, а потом сложить максимальные значения. Ведь прерывание может случиться в любой момент времени, но больше всего опасен случай, когда прерывание произошло в момент работы самой глубоко вложенной подпрограммы/функции, из-за чего поверх начали наладываться подпрограммы/функции, вызываемые из прерывания.
Плюс к тому неопределеность, когда вызываешь библиотечные функции - кто сосчитает, что там понаписано? Вот и компилятор тоже не знает, т.к. библиотеку он использует уже откомпилированную.
Для AVR придется считать не только стек возвратов (RSTACK), но и стек локальных переменных (CSTACK). Всё это считать довольно противно, а потому проще не считать

, а выделять под стеки ВСЮ свободную память. А если не хватит, то деваться всё равно некуда.