Sommaire

Portabilité et types Portabilité

Comme nous l’avons vu, les appels système Linux sont, sauf exception, conformes aux différentes normes du monde Unix, en particulier POSIX et SUS. Cela permet aux programmes qui les utilisent d’être facilement portables sur les différents systèmes de type Unix (Linux, HP-UX, MacOS, BSD*, etc.).

Pour renforcer cette portabilité et masquer les différences d’architecture matérielle, des types redéfinis ont été inclus dans les spécifications SUS (et repris dans POSIX.1).

Ils sont implémentés par des fichiers d’en-tête, le principal étant sys/types.h. Il est conseillé de les utiliser, de façon à assurer une bonne portabilité pour les programmes.

Beaucoup de ces types correspondent à des entiers. Ils permettent en particulier de contourner les problèmes liés aux différences de longueur des entiers, entre systèmes 32 bits ou 64 bits, ou en cas d’évolution des valeurs admises pour certains objets (extension d’un identifiant, initialement sur 16 ou 32 bits, en 64 bits ou davantage).

Ces types redéfinis, basés sur un entier, peuvent poser problème quand on souhaite afficher leur valeur, à des fins de débogage par exemple, avec une fonction de type printf(). On peut dans ce cas demander un affichage en forçant leur type à entier long avec un cast, et en spécifiant dans ...