#include <stdalign.h> // <cstdalign> en C++
#define alignof _Alignof
La macro alignof retourne la contrainte d'alignement d'un type, sous la forme d'une valeur de type
size_t. Elle permet de raisonner proprement sur les adresses mémoire sans écrire directement une
hypothèse dépendante de la plate-forme.
alignof est une macro en C11/C17. En C23, il devient un mot-clé du langage.
L'exemple suivant affiche l'alignement de quelques types usuels et d'une structure.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <stdalign.h> #include <stdio.h> #include <stdlib.h> struct Point { char label; double x; double y; }; int main() { printf( "char : %zu\n", alignof( char ) ); printf( "int : %zu\n", alignof( int ) ); printf( "double : %zu\n", alignof( double ) ); printf( "struct Point : %zu\n", alignof( struct Point ) ); return EXIT_SUCCESS; } |
Sur une plate-forme 64 bits classique, cet exemple peut produire l'affichage suivant.
char : 1 int : 4 double : 8 struct Point : 8
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :