Cómo alinear un puntero en C
¿Hay alguna manera de alinear un puntero en C? Supongamos que estoy escribiendo datos en una pila de matriz (por lo que el puntero va hacia abajo) y quiero que los siguientes datos que escriba estén alineados con 4 para que los datos se escriban en una ubicación de memoria que es un múltiplo de 4, ¿cómo lo haría? ¿ese?
yo tengo
uint8_t ary[1024];
ary = ary+1024;
ary -= /* ... */
Ahora supongamos queary
puntos en la ubicación0x05
. Quiero que apunte0x04
. Ahora solo podría hacer
ary -= (ary % 4);
pero C no permite el módulo en punteros. ¿Hay alguna solución que sea independiente de la arquitectura?