Sommaire: Cours extension de la bibliothèque standard du C
I – Introduction
II – But de cette extension
III – Comment savoir si mon compilateur implémente ces nouveautés ?
IV – Comment utiliser ces nouvelles fonctions ?
V – errno enfin obsolète !
VI – Un nouveau type pour représenter les tailles
VI – Un remplaçant sûr pour gets !
VIII – Les exceptions
IX – Et c’est tout ?
X – Conclusion
XI – Références
XII – Remerciements
Extrait du cours extension de la bibliothèque standard du C
I – Introduction
L’annonce a été publiée le 20 Septembre sur le newsgroup compt.stc.c, un nouveau rapport technique (Technical Report, TR) a été accepté par le comité de normalisation (l’ISO). Il répondait au doux nom de TR 24731 ou Extensions to the C Library, Part I: Bounds-checking interfaces(Extensions de la bibliothèque C, Partie 1 : interfaces de vérification des débordements).
Cette extension se base sur la norme C99 ( Les nouveautés du C99) et a pour but d’étendre la bibliothèque standard du C (on s’en doutait un peu :D).
Sans plus tarder, je vais vous exposer les nouveautés présentées dans cette première extension qui s’attarde sur les problèmes de débordements des tableaux.
II – But de cette extension
Voici les prétentions clairement exposées en introduction de cette extension de la norme :
•Atténuer certaines failles de sécurités : limiter les possibilités de buffer overflow, les failles de type format string, …(1)
•Sécuriser la manipulation des chaînes de caractères : ne pas produire de chaîne de caractères sans caractère de fin ou des chaînes de caractères tronquées de manière inattendue
• Fournir une bibliothèque utile pour le code existant en réduisant les efforts nécessaires pour migrer du code existant
•Supporter du code ré-entrant (thread-safe)
•Système de nommage logique : les fonctions de ce rapport ont un nom qui se termine par _s
•Avoir un format uniforme pour les paramètres des fonctions et leur type de retour
III – Comment savoir si mon compilateur implémente ces nouveautés ?
Les compilateurs conforment à ce rapport, définissent la macro __STDC_LIB_EXT1__ correspondant à la valeur 200509L.
Ce document étant une extension de la norme, il n’y a aucune obligation pour les compilateurs de l’implémenter.
IV – Comment utiliser ces nouvelles fonctions ?
Comme toutes les fonctions de la bibliothèque standard, elles sont définies dans les fichiers d’en-tête (ce rapport n’ajoute pas de nouveau fichier d’en-tête), par contre il se peut que les fonctions ne soit pas déclarées par défaut par l’implémentation.
Pour être sûr que les fonctions soit déclarées, il faut définir la macro __STDC_WANT_LIB_EXT1__ et lui donner la valeur 1. Si vous lui donnez la valeur 0, les fonctions ne seront pas définies.
Si vous définissez cette macro pour un fichier d’en-tête dans une unité de compilation, elle doit avoir la même valeur dans le reste de votre programme si vous incluez à nouveau ce fichier d’en-tête, sinon le préprocesseurs générera une erreur.
…………
Cours extension de la bibliothèque standard du C (Cours PDF)