svp à quoi sert le C mentionné dans #include<cstdlib> pour le C++ ?
svp à quoi sert le C mentionné dans #include<cstdlib> pour le C++ ?
Tu veux dire pourquoi cstdlib et pas stdlib ?
Simple, il s'agit d'une bibliothèque héritée du C. En C on fait #include <stdlib.h>, en C++ on peut faire la même, ou bien #include <cstdlib>
De la même façon, le C dispose de #include <string.h>. En C++, on peut faire le même, ou #include <cstring>.
Faire #include <string> n'inclut pas les fonctions C de gestion de chaine de caractère, mais la classe C++ std::string qui comprend les mêmes fonctionnalités, et d'autres, sous la forme d'un objet chaine de caractère
En fait cstdlib n'est qu'un fichier présent sur ton disque, comme l'est stdlib.h.
Chez moi il se trouve dans C:\MinGW\lib\gcc\mingw32\4.6.1\include\c++.
A chaque appel de ton compilateur, ce répertoire est donc automatiquement inclus pour te permettre d'utiliser la librairie standard C++.
En l'ouvrant tu verras qu'il s'agit d'un header C++ banal qui ne fait qu'encapsuler stdlib.h. Le préfixe "c" en plus l'extension en moins sont une simple convention de nommage.
C'est un peu réducteur. Sur mon système, le fichier en question fait 255 lignes.
Le minimum syndical exigé des headers « c… » est ici : http://www.cplusplus.com/reference/clibrary/
Salut,
Comme C++ hérite de C, le processus de compilation de C++ totalement similaire à celui de C, à savoir qu'il se fait (plus ou moins) en trois temps : préprocessing (durant lequel les directive #include , #define et autres sont exécutée), création d'un fichier de code objet (code binaire "séparé" par fichier d'implémentation) et édition de lien ("mise en commun" de l'ensemble des fichiers objets.
( Je simplifie grandement l'explication ici, car il s'agit juste de te faire comprendre le principe )
Seulement, il y a énormément de pratiques usuelles en C qui sont très fortement peu recommandées en C++, et ce, d'autant plus que certaines fonctionnalités issues de C risquent d'entrer en conflit avec les fonctionnalités similaires de C++.
Il fallait donc trouver un moyen de faire le distingo bien clair entre les en-tête issues de (comprend : fournies par le standart ) C et les en-tête issues de C++.
Le problème, c'est que, avant la première standardisation, la notion d'espace de noms n'existait pas, et que tout ce que C++ fournissait se trouvait (dans des fichiers d'en-tête utilisant l'extension... *.h ) dans "l'espace de noms global" (il n'était pas nécessaire de préfixer une classe fournie par le standard par std::, ni d'utiliser la directive using namespace std;)
Pour ces deux raisons (et peut etre pour d'autres ), le comité de standardisation a décidé de supprimer les extensions du nom des fichiers d'en-tête relatifs à ce que le C++ propose "de base".
Mais, pour malgré tout être en mesure de faire le distingo entre les fichiers d'en-tete issus de C et ceux issus de C++ (car, la seule présence de l'extension *.h pouvait simplement faire référence à un fichier "pré standard" ) il a été décidé de rajouter une lettre (c) au nom des fichiers d'en-tête prenant en charge les fichiers d'en-têtes issus du C
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager