Bibliothèque standard de C - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

La bibliothèque standard de C est une collection maintenant normalisée d'en-têtes et de routines utilisées pour implémenter des opérations courantes, telles que les entrées/sorties et la gestion des chaînes de caractères, dans le langage C. Au contraire d'autres langages comme Pascal et PL/I, C n'inclut pas de mots-clés pour ces tâches, donc presque tous les programmes écrits en C utilisent la bibliothèque standard, ne serait-ce que pour afficher un résultat.

Architecture

Le nom et la signature (le « prototype » en C) de chaque fonction sont décrits dans des en-têtes qui sont inclus dans le code source, tandis que le code objet des fonctions est séparée dans une bibliothèque logicielle, qui ne sera liée au reste du programme qu'au moment de l'édition de liens. Le nom et l'espace de noms des en-têtes sont devenus communs. Le plus souvent, chaque en-tête constitue un fichier séparé, mais l'organisation des implémentations reste diverse. La bibliothèque standard était initialement fournie avec le compilateur, mais aujourd'hui elle fait souvent partie du système d'exploitation. Sous les systèmes Unix, on la trouve habituellement dans le répertoire /usr/lib/, et elle porte les noms de libc.a ou libc.so ; les fichiers d'en-tête, eux, sont dans le répertoire /usr/include. Cependant, le compilateur sait toujours où se trouvent ces fichiers, donc il est inutile de le lui préciser.

Sous Linux, c'est généralement la bibliothèque glibc qui est utilisée ; sous Windows, c'est généralement la bibliothèque standard de Visual C++, denommée MSVCR*.dll, car elle est disponible indépendamment du compilateur C utilisé. Comme les compilateurs C offrent souvent plus de fonctionnalités que celles spécifiées par les normes C ISO et POSIX, une bibliothèque standard fournie avec un compilateur spécifique est peu compatible avec les bibliothèques standards des autres compilateurs pour les fonctions qui ne sont pas normalisées.

L'expérience a montré que la plus grande partie de la bibliothèque standard C a été bien conçue. Quelques parties avec le recul apparaissent cependant comme des erreurs. La fonction de lecture de ligne gets et l'utilisation de scanf pour lire des chaînes en entrée sont la source de beaucoup de débordements de tampon, et la plupart des guides de programmation recommandent d'en éviter l'usage. Une autre vieillerie est strtok, une fonction conçue comme un analyseur lexical primitif mais qui est assez « fragile » et difficile à utiliser.

Extensions

En comparaison avec d'autres langages (par exemple Java), la bibliothèque standard C de la norme ISO est minuscule. Elle fournit un jeu élémentaire de fonctions mathématiques, de manipulation de chaînes de caractères, de conversion de types, et d'entrée/sortie maniant les fichiers et les terminaux. Elle n'inclut pas de base standard de « types de conteneurs » comme le fait la Bibliothèque de Modèles Standard C++ (Standard Template Library) du langage C++). Elle laisse de côté les environnements graphiques (Graphical User Interface, GUI), les outils réseau, les fonctions de synchronisation entre tâches, et la profusion d'autres fonctionnalités que Java fournit en standard. L'avantage principal d'une petite bibliothèque standard est qu'il est beaucoup plus facile de fournir un environnement fonctionnel pour C ISO que pour les autres langages, et le portage d'applications en langage C vers de nouvelles plateformes est donc relativement rapide.

Beaucoup d'autres bibliothèques ont été écrites pour développer des fonctionnalités équivalentes à celles fournies par d'autres langages dans leur bibliothèque standard. Par exemple, le projet d'environnement de bureau GNOME a développé la Boîte à Outils GIMP (GIMP ToolKit, GTK) et GLib, une bibliothèque qui contient des conteneurs de structures de données, et il y a beaucoup d'autres exemples biens connus. De cette variété de bibliothèques disponibles, certaines boîtes à outils ont montré à travers le temps des capacités supérieures. L'inconvénient majeur est qu'elles ne fonctionnent souvent pas particulièrement bien ensemble, les programmeurs sont souvent obligés de jongler avec plusieurs bibliothèques différentes, et certaines fonctionnalités peuvent être présentes sous des formes différentes sous chaque plateforme particulière, parfois même au sein d'un même logiciel important.

Page générée en 0.048 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales | Partenaire: HD-Numérique
Version anglaise | Version allemande | Version espagnole | Version portugaise