Sous-routines, exemples de programmes et bibliothèques
Cette rubrique fournit des informations sur les sous-routines, leur utilisation et leur emplacement de stockage.
Les sous-routines sont stockées dans des bibliothèques afin d'économiser de l'espace de stockage et de rendre le processus de liaison du programme plus efficace. Une bibliothèque est un fichier de données qui contient des copies d'un certain nombre de fichiers individuels et des informations de contrôle qui permettent d'y accéder individuellement. Les bibliothèques se trouvent dans les répertoires /usr/ccs/lib et /usr/lib . Par convention, la plupart d'entre eux ont des noms au format libname.a où name identifie la bibliothèque spécifique.
Toutes les instructions include doivent être au début du premier fichier en cours de compilation, généralement dans la section des déclarations avant main (), et doivent être exécutées avant l'utilisation des fonctions de bibliothèque. Par exemple, utilisez l'instruction suivante pour inclure le fichier stdio.h :
#include <stdio.h>Vous n'avez pas besoin de faire quoi que ce soit de spécial pour utiliser des sous-routines de la bibliothèque C standard (libc.a). La commande cc recherche automatiquement dans cette bibliothèque les sous-routines dont un programme a besoin. Toutefois, si vous utilisez des sous-routines d'une autre bibliothèque, vous devez indiquer au compilateur de rechercher cette bibliothèque. Si votre programme utilise des sous-routines de la bibliothèque libnom.a, compilez votre programme avec l'indicateur -lnom (L minuscule). L'exemple suivant compile le programmemyprog.c, qui utilise des sous-routines de la bibliothèque libdbm.a :
cc myprog.c -ldbmVous pouvez spécifier plusieurs indicateurs -l (L minuscule). Chaque indicateur est traité dans l'ordre indiqué.
Si vous utilisez une sous-routine qui est stockée dans la bibliothèque de compatibilité Berkeley, effectuez une liaison à la bibliothèque libbsd.a avant la liaison à la bibliothèque libc.a , comme illustré dans l'exemple suivant:
cc myprog.c -lbsdEn cas d'erreur, de nombreux sous-programmes renvoient la valeur -1 et définissent une variable externe appelée errno pour identifier l'erreur. Le fichier sys/errno.h déclare la variable errno et définit une constante pour chacune des conditions d'erreur possibles.
Dans cette documentation, tous les appels système sont décrits comme des sous-routines et sont résolus à partir de la bibliothèque libc.a . L'interface de programmation des appels système est identique à celle des sous-routines. En ce qui concerne un programme C Language, un appel système n'est qu'un appel de sous-programme. La différence réelle entre un appel système et un sous-programme est le type d'opération qu'il effectue. Lorsqu'un programme appelle un appel système, un changement de domaine de protection est effectué afin que la routine appelée ait accès aux informations privilégiées du noyau du système d'exploitation. La routine fonctionne alors en mode noyau pour effectuer une tâche pour le compte du programme. De cette manière, l'accès aux informations du système privilégié est limité à un ensemble prédéfini de routines dont les actions peuvent être contrôlées.
- La liste suivante représente les routines wString obsolètes pour libc.a64 bits. Leurs équivalents libc.a 64 bits correspondants sont inclus. Les routines de libc.a 32 bits se trouvent dans la sous-routine wstring .
32 Bit only 64 Bit Equivalent wstrcat wcscat wstrchr wcschr wstrcmp wcscoll wstrcpy wcscpy wstrcspn wcscspn wstrdup Not available and has no equivalents in the 64 bit libc.a wstrlen wcslen wstrncat wcsncat wstrncpy wcsncpy wstrpbrk wcspbrk wstrrchr wcsrchr wstrspn wcsspn wstrtok wcstok - Tous les programmes qui gèrent les caractères multi-octets, les caractères larges ou les informations spécifiques à l'environnement local doivent appeler la sous-routine setlocale au début du programme.
- La programmation dans un environnement à unités d'exécution multiples requiert des sous-routines réentrantes pour garantir l'intégrité des données.