#define ALIGNTO 4
#define ALIGN(len) ( ((len)+ALIGNTO-1) & ~(ALIGNTO-1) )
Как я понимаю, результатом ALIGN является число кратное ALIGNTO. Непонятна только математика процесса, никак не могу въехать. Если с первой частью выражения более-менее ясно, то вот со второй не очень (вроде бы служит для отбрасывания младших битиков, но зачем?)
Буду признателен за снятие с ручника :)
PS. вообще данный метод является ли типичным при выравниваниях по нужной границе?