Цитата(arhiv6 @ Nov 18 2015, 15:17)

Почему такая конструкция считается кошмаром?
В основном потому, что для С-стиля совершенно естественно написать
while( blkCnt-- )
это одно из так называемых "идеоматических выражений" в языке, устойчивая, часто встречающаяся конструкция, которую все знают с первых дней изучения языка и с пониманием которой не возникает никаких проблем как раз ввиду частого использования.
Т.е. появление в коде такой конструкции с головой выдаёт недостаток опыта работы на С/С++ и то, что человек мало читал хорошего чужого кода. Это как стилистические несуразности в прозе - сразу видно что автор ни Толстого с Пушкиным, ни даже "Трёх мушкетёров" почти не читал, букварём ограничился.
Впрочем там и аналогов грамматических ошибок хватает, я в кубе уже не меньше десятка нашёл.
А уж уточнение что ноль беззнаковый (0u)- это просто шедевр.
Первый операнд в операции сравнения, blkCnt, объявлен как uint32_t и потому второй операнд всё равно будет приведён к unsigned типу и сравнение будет беззнаковым. Не говоря уж о том, что разница между знаковым и беззнаковым сравнением будет только когда этот несчастный blkCnt перевалит границу в 2 Гига, что на STM32 означает никогда, у него столько памяти просто нет.
Russia est omnis divisa in partes octo.