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é

Type rsize_t (C11)

Le type ptrdiff_t La macro NULL


Entête à inclure

#define __STDC_WANT_LIB_EXT1__ 1
#include <stddef.h>
#include <stdint.h>  /* Pour RSIZE_MAX */

Type rsize_t

Le type rsize_t est défini par l'annexe K du standard C11, dédiée aux interfaces de contrôle de bornes. Il sert à représenter une taille transmise à une fonction sécurisée, comme vsnprintf_s. La macro compagnon RSIZE_MAX, définie par <stdint.h> quand l'annexe K est disponible, fixe la taille maximale acceptée par ces interfaces.

Ces éléments sont optionnels. Pour demander leur disponibilité, il faut définir __STDC_WANT_LIB_EXT1__ avant d'inclure <stddef.h>. Il faut ensuite tester la présence de __STDC_LIB_EXT1__, car beaucoup d'implémentations ne fournissent pas l'annexe K.

L'exemple suivant montre la forme attendue pour utiliser rsize_t en tenant compte du caractère optionnel de l'annexe K.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
#define __STDC_WANT_LIB_EXT1__ 1

#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

int main() {

#ifdef __STDC_LIB_EXT1__
    rsize_t capacity = 64;

    printf( "capacity == %lu\n", (unsigned long) capacity );
    printf( "RSIZE_MAX == %lu\n", (unsigned long) RSIZE_MAX );
#else
    puts( "Annexe K non disponible sur cette implementation." );
#endif

    return EXIT_SUCCESS;
}
Tester la disponibilité de rsize_t

Sur de nombreuses chaînes de compilation, les résultats produits par cet exemple sont :

Annexe K non disponible sur cette implementation.

Sujets connexes

La librairie stddef.h
size_t
vsnprintf_s


Le type ptrdiff_t La macro NULL




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