Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Macro alignof (C11)

La macro alignas Les macros de détection


Entête à inclure

#include <stdalign.h>  // <cstdalign> en C++

Macro alignof

#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.

Le nom alignof est une macro en C11/C17. En C23, il devient un mot-clé du langage.

Exemple de code

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;
}
Lire l'alignement d'un type

Sur une plate-forme 64 bits classique, cet exemple peut produire l'affichage suivant.

char         : 1
int          : 4
double       : 8
struct Point : 8

Sujets connexes

alignas
max_align_t
aligned_alloc


La macro alignas Les macros de détection




Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé