srand et rand & fonction c++
Bonjour,
Dans la FAQ de C, il utilise srand et rand pour faire des nombres al�atoires avec la biblioth�que stdlib.h. Est-ce que cette biblioth�que est disponible en C++ ? Porte t-elle le m�me nom ?
Sur ce forum on voi souvent des d�butants comme moi qui m�lange des fonctions de C++ et de C. Comment savoir si une fonction appartient au C++ ou au C ou au 2 ?
Merci d'avance...
Re: srand et rand & fonction c++
Bonjour,
Citation:
Envoy� par casafa
Est-ce que cette biblioth�que est disponible en C++ ? Porte t-elle le m�me nom ?
Oui, la stdlib est disponible �galement en C++ et elle s'utilise de la m�me fa�on. Elle a �t� programm�e dans cette optique. Et elle porte le m�me nom.
Citation:
Envoy� par casafa
Comment savoir si une fonction appartient au C++ ou au C ou au 2 ?
Comme tu as d� t'en rendre compte, le C et le C++ sont tr�s proches. En fait, le c++ est du c, avec la couche objet en +. Donc toute fonction c peut �tre utilis�e par un compilateur c++. En revanche, tout ce qui utilise la couche objet en c++ ne pourra pas �tre compil� par un compilateur c.
Hope it helps.
Re: srand et rand & fonction c++
Citation:
Envoy� par casafa
Dans la FAQ de C, il utilise srand et rand pour faire des nombres al�atoires avec la biblioth�que stdlib.h.
stdlib.h n'est pas une biblioth�que, c'est un ent�te d�clarant une partie des fonctions de la biblioth�que standard C.
Citation:
Est-ce que cette biblioth�que est disponible en C++ ? Porte t-elle le m�me nom ?
Toute la biblioth�que standard du C est disponible en C++. On peut inclure deux sortes d'ent�te pour en avoir les d�clarations:- xxx.h: les d�clarations sont � la fois pr�sentes dans le namespace global et dans le namespace std
- cxxx: les d�clarations sont uniquement pr�sentes dans le namespace std
L'utilisation des noms cxxx peut sembler plus propre en C++, mais il y a au moins deux probl�mes:- pour le faire de mani�re r�ellement conforme, il faut ma�triser la biblioth�que C, ce que ne font pas certains fournisseurs de compilateur C++ et donc les formes cxxx ne sont pas strictement conformes,
- les ent�tes xxx.h fournissent souvent plus de choses que ce qui est demand� par la norme C (en particulier POSIX et donc les Unix y ajoutent des d�clarations -- c'est difficile de leur jeter la pierre, une partie de ces d�clarations s'y trouvaient d�j� avant que le comit� de normalisation du C ne commence ses travaux -- et il me semble que c'est aussi le cas pour Windows mais comme je ne l'utilise pas je peux me tromper), g�n�ralement on d�sire ces d�clarations suppl�mentaires et je me suis d�j� retrouv� dans l'impossibilit� de les avoir avec les formes cxxx alors que le contr�le de la disponibilit� de ces d�clarations pour les formes xxx.h est bien connu.
Re: srand et rand & fonction c++
Citation:
Envoy� par Jean-Marc.Bourguet
et il me semble que c'est aussi le cas pour Windows mais comme je ne l'utilise pas je peux me tromper)
C'est le cas: Les ajouts de Microsoft � la "C Run-time Library" sont d�clar�s dans les en-t�tes standard.
Les fonctions de l'API Windows par contre, sont d�clar�es dans les headers windows (commctrl.h, windows.h, etc).
Donc, les headers C++ sont suppos�s �tre plus "standard" que les headers C, ce qui supprime d'embl�e ces extensions, mais en plus ne sont pas strictement conformes, ce qui revient � cumuler les inconv�nients des deux?
Re: srand et rand & fonction c++
Citation:
Envoy� par M�dinoc
Donc, les headers C++ sont suppos�s �tre plus "standard" que les headers C, ce qui supprime d'embl�e ces extensions, mais en plus ne sont pas strictement conformes, ce qui revient � cumuler les inconv�nients des deux?
Je me suis peut-�tre mal exprim�. Il y a deux probl�mes diff�rents sans liens entre eux avec les ent�tes chhh:- ils mettent toutes les d�clarations de la biblioth�que standard C dans le namespace std et uniquement l� dedans, ce qui est en pratique difficile si pas impossible � faire par quelqu'un qui ne fournit que la partie C++ et pas la partie C -- exemple STL port, la biblioth�que de g++,
- les ent�tes du C ont souvent des extensions et -- dans le cas de Unix au moins -- un m�canisme bien connu pour contr�ler la pr�sence ou non de ces extensions. Les version cxxx n'ont parfois pas ces extensions ni aucun moyen de les ajouter. Hors dans le genre de programmes que je fais ces extensions sont plus souvent utiles que nuisibles...
Note: je n'ai pas r�examin� en d�tail l'�tat courant des choses: cela fait longtemps que j'utilise syst�matiquement les formes xxx.h et les version cxxx se comportent peut-�tre mieux maintenant.
Re: srand et rand & fonction c++
Citation:
Envoy� par M�dinoc
Donc, les headers C++ sont suppos�s �tre plus "standard" que les headers C, ce qui supprime d'embl�e ces extensions, mais en plus ne sont pas strictement conformes, ce qui revient � cumuler les inconv�nients des deux?
La norme C++98 contient les ent�tes de la biblioth�que standard de la norme C90 par r�f�rence avec un nombre de modifications. La plus importante est la coexistence des ent�tes <cabc> et <abc.h>. La seule diff�rence est que <cabc> d�clare ses fonctions dans le namespace std.
Les autres modifications sont des d�tails n�cessaire pour garantir la portabilit� d'un programme conforme. Par exemple assert peut �tre un macro selon C90 mais doit en �tre un selon C++98. Cette d�cision impliques qu'on doit utiliser "assert" et non "std::assert".
Un probl�me avec les versions <cabc> est qu'il n'est pas s�r que les extensions qui ont �t� ajout�es aux versions <abc.h> y soient disponibles.