#define __STDC_WANT_LIB_EXT1__ 1 #include <stddef.h> #include <stdint.h> /* Pour RSIZE_MAX */
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; } |
Sur de nombreuses chaînes de compilation, les résultats produits par cet exemple sont :
Annexe K non disponible sur cette implementation.
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 :