svp � quoi sert le C mentionn� dans #include<cstdlib> pour le C++ ?:oops:
Version imprimable
svp � quoi sert le C mentionn� dans #include<cstdlib> pour le C++ ?:oops:
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 :aie:) 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 :D ), 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" :aie:) 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 ;)