Rechercher une page de manuel
feature_test_macros
Langue: fr
Version: 26 avril 2006 (ubuntu - 01/11/07)
Section: 7 (Divers)
NOM
feature_test_macros - Macros de test de fonctionnalitésSYNOPSIS
#include <features.h>
DESCRIPTION
Les macros de test de fonctionnalités permettent au programmeur de contrôler quelles définitions sont exposées par les fichiers d'en-têtes système lorsqu'un programme est compilé. Cela peut être utile pour créer des applications standard, en empêchant des définitions non standard d'être exposées. D'autres macros peuvent être utilisées pour exposer des définitions non standard qui ne sont pas exposées par défaut. Les effets précis de chacune des macros décrites ci-dessous peuvent être vérifiés en inspectant le fichier d'en-tête <features.h>Pour avoir un effet, une macro de test de fonctionnalité doit être définie avant d'inclure tout fichier d'en-tête. Cela peut être accompli soit dans la ligne de commande de compilation (cc -DMACRO=valeur), soit en définissant la macro dans le code source avant d'inclure tout en-tête.
Linux/glibc comprend les macros de test de fonctionnalité suivantes :
- _POSIX_C_SOURCE
- Si cette macro est définie avec la valeur 1, les fichiers d'en-têtes exposent les définitions conformes à POSIX.1-1990 et ISO C (1990). Avec la valeur 199309 ou supérieure, les définitions POSIX.1b (extensions temps-réel) sont aussi exposées. Avec la valeur 199506 ou supérieure, les définitions de POSIX.1c (threads) sont exposées en plus des précédentes. Avec la valeur 200112, les définitions correspondant à la spécification POSIX.1-2001 de base sont exposées (sans l'extension XSI).
- _POSIX_SOURCE
- Définir cette macro obsolète (quelle que soit sa valeur) est équivalent à définir _POSIX_C_SOURCE à la valeur 1.
- _XOPEN_SOURCE
- Si cette macro est définie, les définitions conformes à POSIX.1, POSIX.2 et XPG4 sont exposées par les en-têtes. Avec une valeur supérieure ou égale à 500, les définitions de SUSv2 (UNIX 98) sont également exposées. Avec une valeur supérieure ou égale à 600, les définitions de SUSv3 (UNIX 03, c'est-à-dire la spécification de base POSIX.1-2001 plus l'extension XSI) et de C 99 sont exposées en plus des précédentes.
- _XOPEN_SOURCE_EXTENDED
- Si cette macro est définie à la valeur 1, et si _XOPEN_SOURCE est définie, exposer les définitions correspondant aux extensions UNIX XPG4v2.
- _ISOC99_SOURCE
- Exposer les extensions de C 99 au C ISO (1990).
- _LARGEFILE64_SOURCE
- Exposer les définitions de l'API alternative spécifiée par le LFS (Large File Summit) comme une « extension de transition » à la Single Unix Specification. (Voir http://opengroup.org/platform/lfs.html)
- _FILE_OFFSET_BITS
- Définir cette macro à la valeur 64 convertit automatiquement les références aux fonctions et types de données 32 bits liés aux E/S sur les fichiers et aux opérations sur le système de fichiers en références à leurs équivalents 64 bits. C'est utile pour les E/S sur des gros fichiers (> 2 Gigaoctets) sur les systèmes 32 bits.
- _BSD_SOURCE
- Si cette macro est définie, les définitions héritées de BSD sont exposées par les en-têtes. De plus, les définitions BSD sont préférées dans les situations où les normes sont en conflit.
- _SVID_SOURCE
- Si cette macro est définie (quelle que soit sa valeur), les en-têtes exposent les définitions héritées de Système V. (SVID == System V Interface Definition ; consultez 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 199506, et _XOPEN_SOURCE avec la valeur 600. De plus, de nombreuses extensions spécifiques GNU sont exposées.
- _REENTRANT
- Définir cette macro rend accessibles les définitions de certaines fonctions réentrantes. Pour les programmes multithreadés, utilisez cc -pthread à la place.
- _THREAD_SAFE
- Synonyme de _REENTRANT, fourni pour la compatibilité avec d'autres implémentations.
- _FORTIFY_SOURCE
- Définir cette macro active certains tests peu couteux pour détecter certains dépassements de tampons dans diverses fonctions de manipulation de chaînes ou de mémoire. Tous les dépassements de tampons ne sont pas détectés, mais uniquement certains cas fréquents. Actuellement, des vérifications sont ajoutées pour les appels à memcpy(3), mempcpy(3), memmove(3), memset(3), stpcpy(3), strcpy(3), strncpy(3), strcat(3), strncat(3), sprintf(3), snprintf(3), vsprintf(3), vsnprintf(3), et gets(3). Si _FORTIFY_SOURCE est défini à 1, avec un niveau d'optimisation de 1 ou plus (gcc -O1), des vérifications sans influence sur le comportement des programmes corrects sont faites. Avec _FORTIFY_SOURCE défini à 2, des vérifications supplémentaires sont ajoutées, mais certains programmes conformes peuvent échouer. Certaines vérifications peuvent être effectuées à la compilation et génèrent des avertissements du compilateur ; d'autres ont lieu à l'exécution et causent une erreur si le test échoue. L'utilisation de cette macro nécessite une gestion par le compilateur, qui est disponible dans gcc(1) depuis la version 4.0.
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 sont définies, les autres macros sont désactivées si elles ne sont pas explicitement définies. (Exception : si _POSIX_C_SOURCE n'est pas défini, il est toujours défini à la valeur 200112 (199506 dans les glibc antérieures à 2.4), sauf si le compilateur est invoqué dans un mode particulier à un standard, p.ex avec l'attribut -std=c99.) Plusieurs macros peuvent être définies, les effets s'additionnent.
CONFORMITÉ
POSIX.1 spécifie _POSIX_C_SOURCE, _POSIX_SOURCE et _XOPEN_SOURCE. _XOPEN_SOURCE_EXTENDED est spécifié par XPG4v2 (alias SUSv1). _FILE_OFFSET_BITS n'est spécifié par aucune norme, mais est utilisé par d'autres implémentations. _BSD_SOURCE, _SVID_SOURCE, _GNU_SOURCE, _FORTIFY_SOURCE, _REENTRANT et _THREAD_SAFE 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 similaire, mais typiquement sous un nom différent. Ce fichier est inclus automatiquement par les autres en-têtes si nécessaire : il n'est pas nécessaire de l'inclure explicitement pour utiliser les macros de test de fonctionnalité.Selon quelles macros de test de fonctionnalité ci-dessus sont définies, <features.h> définit diverses autres macros qui sont testées par les en-têtes de la glibc. Ces macros ont des noms préfixés par deux caractères underscore (par exemple __USE_MISC). Les programmes ne doivent jamais définir ces macros directement ; ils doivent utiliser les macros de test de fonctionnalité de la liste précédente.
TRADUCTION
Cette page de manuel a été traduite et est maintenue par Julien Cristau <julien.cristau@ens-lyon.org> et l'équipe francophone de traduction de Debian.Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».
polis et des malotrus et même des femmes.
-+- Noëlle, sur fr.rec.photo -+-
Contenus ©2006-2009 Benjamin Poulain
Design ©2006-2009 Maxime Vantorre