Bibliothèque standard de C - Définition et Explications

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs est disponible ici.
Langages à objets
C++ - C# - D
Delphi - Eiffel - Groovy
Java - Lisaac - Python - Ruby
Simula - Smalltalk
Visual Basic - WLangage
Langages impératifs
APL - ASP - Assembleur
BASIC (En programmation, BASIC est un acronyme pour Beginner's All-purpose Symbolic Instruction Code. qui désigne une famille de langages de programmations de haut niveau.) - C - Cobol (COBOL est un langage de programmation de troisième génération créé en 1959 (officiellement le 18 Septembre 1959). Son nom est l'acronyme de COmmon Business Oriented Language...) - Natural (Natural est un langage de programmation semi-compilé, édité par la société allemande Software AG.)
Forth - Fortran - Limbo
Logo - Pascal - Perl - PHP (PHP (sigle de PHP: Hypertext Preprocessor), est un langage de scripts libre principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP, mais pouvant également fonctionner comme...)
Langages fonctionnels
Haskell - ML/OCaml
Lisp/Common Lisp
Scheme - XSLT
Langages déclaratifs
Clips - Prolog
Langages concurrents
Ada 95 - Erlang
Voir aussi
Conception - Codage (De façon générale un codage permet de passer d'une représentation des données vers une autre.)
Tests - Optimisations

La bibliothèque standard du 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 le Pascal et le 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 (L’architecture peut se définir comme l’art de bâtir des édifices.)

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 (Le code source (ou les sources voire le source) est un ensemble d'instructions écrites dans un langage de programmation informatique de haut niveau, compréhensible par un être humain entraîné, permettant...), tandis que le code objet (En informatique (développement), un fichier objet est un fichier intermédiaire intervenant dans le processus de compilation.) des fonctions est séparée dans une bibliothèque logicielle (En informatique, une bibliothèque ou librairie[1] logicielle (ou encore, bibliothèque de programmes) est un ensemble de fonctions utilitaires, regroupées et mises à disposition afin de pouvoir être utilisées sans avoir à les...), 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 ( Un fichier est un endroit où sont rangées des fiches. Cela peut-être un meuble, une pièce, un bâtiment, une base de données informatique. Par exemple : fichier des patients d'un médecin, fichier des ouvrages dans une...) séparé, mais l'organisation (Une organisation est) 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 (UNIX (marque déposée officiellement comme UNIX, parfois aussi écrit comme Unix avec des petites capitales) est le nom d'un système d'exploitation...), 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 (Au sens strict, Linux est le nom du noyau de système d'exploitation libre, multitâche, multiplate-forme et multi-utilisateur de type UNIX créé par Linus Torvalds, souvent désigné...), c'est généralement la bibliothèque glibc (La bibliothèque C du projet GNU, ou glibc, est une bibliothèque standard du langage C du projet GNU. Il s'agit d'un logiciel libre, distribué selon les termes de la licence publique générale GNU. Son principal contributeur et...) qui est utilisée ; sous Windows (Windows est une gamme de systèmes d'exploitation produite par Microsoft, principalement destinées aux machines compatibles PC. C'est le remplaçant de...), c'est généralement la bibliothèque standard de Visual C++, denommée MSVCR*.dll, car elle est disponible indépendament 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 (POSIX est le nom d'une famille de standards définie depuis 1988 par l'IEEE et formellement désignée IEEE 1003. Ces standards ont émergé d'un projet de standardisation des APIs des logiciels...), 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 (La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel (voire de matériel, cf. VHDL).) recommandent d'en éviter l'usage (L’usage est l'action de se servir de quelque chose.). Une autre vieillerie est strtok, une fonction conçue comme un analyseur lexical primitif mais qui est assez " fragile " et difficile à utiliser.

Histoire

Unix et le langage de programmation (Un langage de programmation est un langage informatique, permettant à un être humain d'écrire un code source qui sera analysé par une machine, généralement un ordinateur. Le code...) C ont été créés par les laboratoires AT&T et Bell (Bell Aircraft Corporation est un constructeur aéronautique américain fondé le 10 juillet 1935. Après avoir construit des avions de combat durant la...) (AT&T's Bell Laboratories) au début des années 1970. Le langage C primitif ne fournissait pas de fonctionnalités incorporées comme les opérations d'entrées/sorties (au contraire des langages traditionnels comme Pascal et Fortran). Avec le temps (Le temps est un concept développé par l'être humain pour appréhender le changement dans le monde.), les communautés d'utilisateurs du C ont partagé des idées et des implémentations de ce que nous appelons maintenant la bibliothèque standard du C pour fournir ces fonctionnalités. Beaucoup de ces idées ont été incorporées dans la définition (Une définition est un discours qui dit ce qu'est une chose ou ce que signifie un nom. D'où la division entre les définitions réelles et les...) normalisée du langage de programmation C.

Pendant la décennie (Une décennie est égale à dix ans. Le terme dérive des mots latins de decem « dix » et annus « année.) 1970, le C est devenu populaire. Beaucoup d'universités et d'organisations ont créé leurs propres variations de ce langage pour leurs propre projets. Dans les années 1980 des problèmes de compatibilité entre les différentes implémentations du C sont apparus.

Normes ANSI et ISO

En 1983 l'Institut (Un institut est une organisation permanente créée dans un certain but. C'est habituellement une institution de recherche. Par exemple, le Perimeter Institute for Theoretical Physics est un...) national américain des standards (American National Standards Institute (ANSI)) a formé un comité pour établir une spécification normalisée du C, connue sous le nom de " C ANSI ". Ce travail culmina avec la création de la norme (Une norme, du latin norma (« équerre, règle ») désigne un état habituellement répandu ou moyen considéré le plus souvent comme une...) C89 en 1989. Une partie de la norme résultante était un ensemble (En théorie des ensembles, un ensemble désigne intuitivement une collection d’objets (les éléments de l'ensemble), « une multitude qui peut...) de fonctions de bibliothèque appelé bibliothèque standard C ANSI (ANSI C standard library). Cette norme est devenue Norme internationale en 1990, et est aussi connue comme C ISO (ISO C).

Des révisions ultérieures de la norme C ISO ont ajouté de nouvelles fonctions et de nouveaux en-têtes à la bibliothèque. Le support de ces extensions varie selon les implémentations. Les en-têtes iso646.h, wchar.h, et wctype.h ont été ajoutés avec l'amendement normatif 1 (Normative Amendment 1), abrégé ci-dessous par Amd.1, qui constitue un ajout à la norme C ratifié en 1995. Les en-têtes complex.h, fenv.h, inttypes.h, stdbool.h, stdint.h et tgmath.h ont été ajoutées avec le C99, une révision de la norme C publiée en 1999.

La bibliothèque standard C ISO consiste en 24 en-têtes qui peuvent être inclus dans un projet (Un projet est un engagement irréversible de résultat incertain, non reproductible a priori à l’identique, nécessitant le concours et l’intégration d’une grande diversité de...) de programmeur (En informatique, un développeur (ou programmeur) est un informaticien qui réalise du logiciel en créant des algorithmes et en les mettant en œuvre dans un langage de programmation.) avec une simple directive. Chaque en-tête contient des prototypes de fonctions, des définitions de types et de macros. Le contenu de ces en-têtes est décrit ci-dessous.

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 (Les mathématiques constituent un domaine de connaissances abstraites construites à l'aide de raisonnements logiques sur des concepts tels que les nombres, les figures, les structures et les...), 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 (Une interface est une zone, réelle ou virtuelle qui sépare deux éléments. L’interface désigne ainsi ce que chaque élément a besoin de connaître de l’autre pour pouvoir fonctionner correctement.), GUI), les outils réseau (Un réseau informatique est un ensemble d'équipements reliés entre eux pour échanger des informations. Par analogie avec un filet (un réseau est un « petit rets », c'est-à-dire...), 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 (L'environnement est tout ce qui nous entoure. C'est l'ensemble des éléments naturels et artificiels au sein duquel se déroule la vie humaine. Avec les enjeux écologiques actuels, le terme...) fonctionnel pour le C ISO que pour les autres langages, et le port 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 (GNOME, acronyme de GNU Network Object Model Environment, est un environnement de bureau libre convivial dont l'objectif est de rendre accessible l'utilisation du système d'exploitation GNU au...) a développé la Boîte à Outils GIMP (GIMP (prononcez /gimp/), signifiant GNU Image Manipulation Program, littéralement « programme GNU de manipulation d'images », anciennement General...) (GIMP ToolKit, GTK) et la glib, une bibliothèque qui contient des conteneurs de structures de données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.), 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 à 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 (En informatique, un logiciel est un ensemble d'informations relatives à des traitements effectués automatiquement par un appareil informatique. Y sont inclus les...) important.

Les en-têtes de la bibliothèque C ISO

assert.h : Contient la macro assert, utilisée pour aider à détecter des incohérences de données et d'autres types de bogues dans les versions de débogage d'un programme.

complex.h : Pour manipuler les nombres complexes (introduit par C99).

ctype.h : Fonctions utilisées pour classifier rapidement les caractères, ou pour convertir entre majuscules et minuscules de manière indépendante du système de codage des caractères) (character set) utilisé (ASCII, ISO 8859-1 (La norme ISO 8859-1, dont le nom complet est ISO/CEI 8859-1, et qui est souvent appelée Latin-1 ou Europe occidentale, forme la première...), EBCDIC, etc.).

errno.h : Ensemble (ou le plus souvent sous-ensemble) des codes d'erreurs renvoyés par les fonctions de la bibliothèque standard au travers de la variable (En mathématiques et en logique, une variable est représentée par un symbole. Elle est utilisée pour marquer un rôle dans une formule, un prédicat ou un algorithme....) errno.

fenv.h : Pour contrôler l'environnement en virgule flottante (floating-point) (introduit par C99).

float.h : Contient des constantes qui spécifient les propriétés des nombres en virgule flottante qui dépendent de l'implémentation (Le mot implantation peut avoir plusieurs significations :), telles que la différence minimale entre deux nombres en virgule flottante différents (xxx_EPSILON), le nombre (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) maximum de chiffres de précision (xxx_DIG) et l'intervalle des nombres pouvant être représentés (xxx_MIN, xxx_MAX).

inttypes.h : Pour des conversions précises entre types entiers (introduit par C99).

iso646.h : Pour programmer avec le jeu de caractères ISO 646 (L'ISO/CEI 646 (ICS n°35.040) est une norme ISO qui depuis 1972 spécifie des codes de caractères graphiques codés sur 7 bits à partir desquels plusieurs normes nationales sont...) (introduit par Amd.1).

limits.h : Contient des constantes qui spécifient les propriétés des types entiers qui dépendent de l'implémentation, comme les intervalles des nombres pouvant être représentés (xxx_MIN, xxx_MAX).

locale.h : Pour s'adapter aux différentes conventions culturelles.

math.h : Pour calculer des fonctions mathématiques courantes. C99 a ajouté de nombreuses fonctions mathématiques, en particulier pour converger avec la norme CEI 559 dite aussi IEEE 754.

setjmp.h : Pour exécuter des instructions goto (L’instruction goto (de l’anglais go to, en français aller à) est une instruction présente dans de nombreux langages de programmation. Elle...) non locales (sortes d'exceptions).

signal ( Termes généraux Un signal est un message simplifié et généralement codé. Il existe sous forme d'objets ayant des formes particulières. Les signaux lumineux sont employés depuis la nuit des temps...).h : Pour contrôler les signaux (conditions exceptionnelles demandant un traitement immédiat, par exemple signal de l'utilisateur).

stdarg.h : Pour créer des fonctions avec un nombre variable d'arguments.

stdbool.h : Pour avoir une sorte de type booléen (Un booléen en logique et en programmation informatique est un type de variable à deux états. Les variables de ce type sont ainsi soit à l'état vrai...) (introduit par C99).

stdint.h : Définit divers types d'entiers, c'est un sous-ensemble (En mathématiques, un ensemble A est un sous-ensemble ou une partie d’un ensemble B, ou encore B est sur-ensemble de A, si tout élément du...) de inttypes.h (introduit par C99).

stddef.h : Définit plusieurs types et macros utiles, comme NULL (NULL est un mot clef présent dans de nombreux langages informatiques, et qui désigne l'état d'un pointeur qui n'a pas de cible ou d'une variable qui n'a pas de valeur. La notion de...).

stdio.h : Fournit les capacités centrales d'entrée/sortie du langage C, comme la fonction printf.

stdlib.h : Pour exécuter diverses opérations dont la conversion, la génération de nombres pseudo-aléatoires, l'allocation de mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.), le contrôle (Le mot contrôle peut avoir plusieurs sens. Il peut être employé comme synonyme d'examen, de vérification et de maîtrise.) de processus, la gestion de l'environnement et des signaux, la recherche (La recherche scientifique désigne en premier lieu l’ensemble des actions entreprises en vue de produire et de développer les connaissances scientifiques. Par extension métonymique, la recherche scientifique désigne également le...) et le tri.

string.h : Pour manipuler les chaînes de caractères.

tgmath.h : Pour des opérations mathématiques sur des types génériques (introduit par C99).

time.h : Pour convertir entre différents formats de date et d'heure (L’heure est une unité de mesure du temps. Le mot désigne aussi la grandeur elle-même, l'instant (l'« heure qu'il est »), y compris en...).

wchar.h : Pour manipuler les caractères larges (wide char), nécessaire pour supporter un grand nombre de langues et singulièrement Unicode (Unicode est une norme informatique, développée par le Consortium Unicode, qui vise à donner à tout caractère de n’importe quel système d’écriture un...) (introduit par Amd.1).

wctype.h : Pour classifier les caractères larges (introduit par Amd.1).

La bibliothèque standard en C++

Le langage de programmation C++ reprend les fonctionnalités de la bibliothèque standard C ISO, mais il y fait plusieurs modifications, comme transformer les noms des en-têtes de xxx.h en cxxx (cependant, les noms dans le style C sont toujours disponibles, bien que périmés), et placer tous les identificateurs dans l'espace de noms (namespace) std.

Cet article vous a plus ? Partagez-le sur les réseaux sociaux avec vos amis !
Page générée en 0.094 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique