Como alinhar um ponteiro em C

Existe uma maneira de alinhar um ponteiro em C? Suponha que eu esteja gravando dados em uma pilha de matrizes (para que o ponteiro desça) e que os próximos dados que eu escrevo sejam alinhados em 4, para que os dados sejam gravados em um local de memória que seja múltiplo de 4, como eu faria este?

eu tenho

 uint8_t ary[1024];
 ary = ary+1024;
 ary -= /* ... */

Agora suponha queary pontos no local0x05. Eu quero que aponte para0x04. Agora eu poderia fazer

ary -= (ary % 4);

mas C não permite módulo em ponteiros. Existe alguma solução que seja independente da arquitetura?

questionAnswers(3)

yourAnswerToTheQuestion