February 24th, 2010

работа, кошка

О красоте кода на C

Совершенно не задумываясь неделю назад написал примерно такой вот код.

if(timer.time)
{
	timer.time--;
	if(!timer.time)(*timer.task)(timer.arg);
}

Сегодня, когда его увидел, задумался о том, что легендарная читабельность C - не такая уж и страшилка, и образчики оной могут появляться совершенно без задней мысли. А про C++ лучше даже не думать.
лилия, походы

Атомные блоки - на память

Небольшая заметка себе на память. Дабы оградить себя от грабель, незаметно подползающих под ноги, провёл сегодня эксперимент, который доказал, что ATOMIC_BLOCK(ATOMIC_RESTORESTATE) действительно восстанавливает состояние SREG, даже при выходе из середины блока (например, по return).
Да, и ещё: в основе этих макросов лежит цикл for - это обязательно нужно помнить при применении внутри него инструкций break и continue.