feature_test_macros

Autres langues

Langue: fr

Version: 26 avril 2006 (fedora - 16/08/07)

Section: 7 (Divers)

NOM

ftm - Macros de test de fonctionnalités.

SYNOPSIS

#include <features.h>
 

DESCRIPTION

Les macros de test de fonctionnalités permettent au programmeur de contrôler les définitions qui seront exposées par les fichiers d'en-têtes système lorsqu'un programme est compilé. Cela est utile pour la création d'applications portables, en empêchant les définitions non-standards d'être exposées. D'autres macros peuvent être utilisées pour exposer des définitions non-standards qui ne le sont pas par défaut. Les effets précis de chacune de ces macros de test de fonctionnalités décrites plus loin peuvent être constatés en inspectant le fichier d'en-tête <features.h>.

Pour quelle soit effective, une macro de test de fonctionnalités doit être définie avant l'inclusion de tout autre fichier d'en-tête. Cela peut être fait soit dans la commande de compilation (cc -DMACRO=valeur), soit en définissant la macro dans le code source avant d'inclure les en-têtes.

Linux/glibc reconnait les macros de test de fonctionnalités suivantes :

_POSIX_C_SOURCE
Définir cette macro avec une valeur de 1 fait que les fichiers d'en-têtes exposeront les définitions conformes à POSIX.1-1990 et ISO C (1990). Définir cette macro avec une valeur de 199309 ou plus exposera en plus les définitions pour POSIX.1b (extensions temps réel). Définir cette macro avec une valeur de 199506 ou plus exposera en plus les définitions pour POSIX.1c (threads). Définir cette macro avec une valeur de 200112 exposera les définitions correspondant à la spécification de base de POSIX.1-2001 (excluant l'extension XSI).
_POSIX_C_SOURCE
Définir cette macro obsolète avec n'importe quelle valeur est équivalent à définir _POSIX_SOURCE à une valeur de 1.
_XOPEN_SOURCE
Définir cette macro avec n'importe quelle valeur fera que les fichiers d'en-têtes exposeront les définitions conformes à POSIX.1, POSIX.2 et XPG4. La définir avec la valeur 500 ou plus exposera en plus les définitions pour SUSv2 (UNIX 98). La définir avec la valeur 500 ou plus exposera en plus les définitions pour SUSv3 (UNIX 03 ; c'est-à-dire, la spécification de base POSIX.1-2001 plus l'extension XSI) et les définitions C 99.
_XOPEN_SOURCE_EXTENDED
Si cette macro est définie avec la valeur 1 et que _XOPEN_SOURCE est définie, cela exposera les définitions correspondant aux extensions UNIX XPG4v2.
_ISOC99_SOURCE
Exposer les extensions C99 de ISO C (1990).
_LARGEFILE64_SOURCE
Exposer les définitions pour l'API alternative spécifiée par LFS (Large File Summit) comme une « extention transitionnelle » les « Single UNIX Specification ». (Voir http://ftp.sas.com/standards/large.file/.)
_FILE_OFFSET_BITS
Définir cette macro avec la valeur 64 convertira automatiquement les références aux fonctions 32 bits et aux types de données relatives aux entrées-sorties de fichiers et aux opérations sur le système de fichiers en leurs équivalents 64 bits. Cela est utile pour effectuer des entrées-sorties sur de gros fichiers (> 2 Gigaoctets) sur des systèmes 32 bits.
_BSD_SOURCE
Définir cette macro avec n'importe quelle valeur fera que les fichiers d'en-têtes exposeront les définitions dérivées de BSD. Définir cette macro fera aussi que les définitions BSD seront préférées dans les situations où les normes sont en conflit.
_SVID_SOURCE
Définir cette macro avec n'importe quelle valeur fera que les fichiers d'en-têtes exposeront les définitions dérivées de Système V. (SVID == System V Interface Definition ; standards(7).)
_GNU_SOURCE
Définir cette macro avec n'importe quelle valeur est équivalent à définir _BSD_SOURCE, _SVID_SOURCE, _LARGEFILE64_SOURCE, _ISOC99_SOURCE _POSIX_C_SOURCE avec la valeur 1999506 et _XOPEN_SOURCE avec la valeur 600. De plus, diverses extensions spécifiques GNU seront également exposées.

Lorsque gcc(1) est invoqué, les macros suivantes sont définies par défaut : _BSD_SOURCE, _SVID_SOURCE, _POSIX_SOURCE et POSIX_C_SOURCE=199506. Si des macros individuelles sont définies, les autres macros sont désactivées à moins d'être explicitement définies. (Exception : si POSIX_C_SOURCE n'est pas définie autrement, elle est toujours définie avec la valeur 199506, à moins que le compilateur ne soit invoqué dans l'un de ces modes standards, par exemple avec l'option -std=c99.) Plusieurs macros peuvent être définies ; les résultats s'additionnent.

CONFORMITÉ

POSIX.1 spécifie _POSIX_C_SOURCE, _POSIX_SOURCE et _XOPEN_SOURCE. _XOPEN_SOURCE_EXTENDED était spécifiée par XPG4v2 (aka SUSv1). _FILE_OFFSET_BITS n'est spécifiée par aucune norme mais est employée dans quelques autres implémentations. _BSD_SOURCE, _SVID_SOURCE et _GNU_SOURCE sont spécifiques à Linux (glibc).

NOTES

<features.h> est un fichier d'en-tête spécifique à Linux/glibc. D'autres systèmes ont un fichier analogue mais avec un nom différent. Ce fichier d'en-tête est automatiquement inclus par d'autres fichiers d'en-têtes comme nécessaire : il n'est donc pas nécessaire de l'inclure explicitement pour pouvoir utiliser les macros de test de fonctionnalités.

TRADUCTION

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 4 août 2006 et révisée le 14 août 2006.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 7 ftm ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.