Puede detectar estos "agujeros" a través de la offsetof
macro:
#include <stddef.h>
struct test {
char a;
int b;
};
...
printf("%zu", offsetof(struct test, b));
Si se imprime más de 1
, b
obviamente tiene requisitos de alineación y el compilador produce un hueco en el medio.
Obviamente, esto ocurre en tiempo de ejecución, no en tiempo de compilación, pero puede escribir un script que produzca un archivo fuente similar, compilarlo y ejecutarlo antes del resto del proyecto y luego, en función del resultado, decisiones sobre cómo construir su proyecto.
No creo que ningún compilador tenga la capacidad de notificarte al respecto.
Se sabe que escribieron estructuras por lo que podría ser prácticamente seguro que lo hacen no contiene relleno. Si esto ayuda, avíseme y le informaré sobre los detalles. – Lindydancer
Por curiosidad, ¿por qué? – detly