Cours librairie standard de UNIX, tutoriel & guide de travaux pratiques en pdf.
L’intérêt des librairies
La librairie standard de UNIX est actuellement encore largement utilisée. Mais il ne faut pas oublier qu’elle a été prévue pour une utilisation dans un cadre de programmation système. Elle recèle nombre de fonctions de très bas niveau, ce qui, incidemment, en fait un outil très performant dans le cadre de la programmation système ou la programmation de microcontrôleurs. Ainsi des routines couramment utilisées sous UNIX, comme signal(), setjmp(), longjmp(), provoquent une rupture du déroulement normal du programme qui peut poser de sérieux problèmes de récupération de mémoire, en particulier pour des objets crées automatiquement, de manière pas toujours transparente par le compilateur.
En principe, lorsqu’un groupe de travail se met à développer en C, il se met sur pied une librairie de procédures qui va croître au cours du temps et au cours des projets. Cette démarche nécessite une organisation, des règles à respecter absolument. Ces règles sont fonction de la dimension du groupe de travail. Pour de petits groupes largement autonomes (10 personnes), on peut se contenter d’encourager les gens à parler entre eux. Si cette communication ne va pas de soi, souvent en raison de problèmes d’incompatibilité entre les divers développeurs, on peut « organiser » cet échange de vues, sans que cela soit forcément une directive émise par un chef de groupe donné. En fait, une directive fonctionne généralement mieux lorsqu’elle est spontanément appliquée. Une bonne méthode (et de surcroît facile à rendre populaire dans nos contrées) est l’organisation fréquente de verrées ou chacun parle de manière libre de ce qu’il fait.
Pour des groupes de développement plus importants, ou des projets regroupant plusieurs groupes (parfois distribués géographiquement), il n’est plus possible de se contenter d’une communication orale, et il faut recourir à des documents pour échanger les informations concernant les classes produites. La production de documents étant une entreprise longue et fastidieuse, on peut raisonnablement craindre que l’échange d’informations ne se fasse pas aussi bien que l’on pourrait le souhaiter. C’est pourquoi là aussi, il est important de trouver des moyens permettant de favoriser des communications informelles entre les groupes de développement. Ces communications ont de tous temps été précieuses, elles le sont d’autant plus lorsque l’on dispose d’un outil potentiellement efficace pour échanger du code.
Librairie C standard
La librairie C standard est certainement la plus utilisée des librairies C++, bien qu’elle ne soit pas “orientée objets”. Le principal avantage de cette librairie est qu’elle est en partie normalisée par l’ANSI, et de ce fait se retrouve sur toutes les implémentations ANSI du langage. La liste présentée dans le cadre de ce chapitre ne prétend pas être exhaustive, mais présente les principales fonctions de la librairie C telle qu’on la retrouve sur quasiment toutes les implémentations de C et de C++ (à l’exception de certains compilateurs C de bas niveau, utilisés pour la programmation de chips spécialisés, comme des microcontrôleurs et des processeurs de signaux, ou DSP).
Il est important de se souvenir que cette librairie a été conçue indépendemment de C++. Elle peut donc présenter de sérieuses incompatibilités avec certaines constructions plus modernes de C++. En pratique, ces incompatibilités ne sont pas gênantes, dans la mesure où l’on ne mélange pas les fonctions de la librairie C avec les fonctions correspondantes d’une libraire C++, ou pire, avec des instructions réservées de C++. Ainsi, le code suivant produira à coup sûr de sérieuses difficultés à l’utilisation :
const int nbPoint = 200; struct Point { int x, y; };
Point *pptr; pptr = calloc(nbPoint, sizeof(Point)); … delete pptr; // suicidaire !