Man page - ftm(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr ru deManual
feature_test_macros
NOMDESCRIPTION
Spécification des exigences de macro de test de fonctionnalités dans lespages de manuel
Macros de test de fonctionnalités comprises par la glibc
Définitions par défaut, définitions implicites et combinaison dedéfinitions
STANDARDS
HISTORIQUE
NOTES
EXEMPLES
Source du programme
VOIR AUSSI
TRADUCTION
NOM
feature_test_macros â Macros de test de fonctionnalitĂ©s
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Ă©.
NOTE : pour avoir un effet, une macro de test de fonctionnalitĂ©s 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. Lâexigence que la macro soit dĂ©finie avant dâinclure nâimporte quel fichier dâen-tĂȘte existe parce que les fichiers dâen-tĂȘte peuvent librement sâinclure mutuellement. Donc, par exemple, dans les lignes suivantes, dĂ©finir la macro _GNU_SOURCE peut nâavoir aucun effet parce que lâen-tĂȘte <abc.h> lui-mĂȘme inclut <xyz.h> (POSIX le permet explicitement) :
#include
<abc.h>
#define _GNU_SOURCE
#include <xyz.h>
Certaines macros de test de fonctionnalitĂ©s sont utiles pour crĂ©er des applications portables, en empĂȘchant des dĂ©finitions non normalisĂ©es dâĂȘtre exposĂ©es. Dâautres macros peuvent ĂȘtre utilisĂ©es pour exposer des dĂ©finitions non normalisĂ©es 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> . Remarque : les applications nâont pas besoin dâinclure directement <features.h> . En fait, le faire est fortement dĂ©conseillĂ©. Consultez les NOTES.
Spécification des exigences de macro de test de fonctionnalités dans lespages de manuel
Quand une fonction nĂ©cessite quâune macro de test de fonctionnalitĂ©s soit dĂ©finie, la section SYNOPSIS de la page de manuel comprend gĂ©nĂ©ralement une note de la forme suivante (exemple pris dans la page de manuel acct (2)) :
#include <unistd.h>
int acct(const char * fichier );
Exigences de
macros de test de fonctionnalités pour
la glibc (consultez
feature_test_macros
(7))Â :
acct () : _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Les doubles barres || signifient que pour obtenir la dĂ©claration de acct (2) depuis <unistd.h> , une des dĂ©finitions de macros doit ĂȘtre utilisĂ©e avant dâinclure les fichiers dâen-tĂȘte :
#define
_BSD_SOURCE
#define _XOPEN_SOURCE /* Ou toute valeur < 500 */
Autrement, des dĂ©finitions Ă©quivalentes peuvent ĂȘtre faites lors de lâappel au compilateur :
cc
-D_BSD_SOURCE
cc -D_XOPEN_SOURCE # Ou toute valeur < 500
Veuillez noter que, comme dĂ©crit ci-dessous, certaines macros de test de fonctionnalitĂ©s sont dĂ©finies par dĂ©faut , et il nâest donc pas toujours nĂ©cessaire de spĂ©cifier explicitement les macros indiquĂ©es dans le SYNOPSIS.
Dans certains cas, les pages de manuel utilisent des raccourcis pour exprimer la nécessité de certaines macros de test (exemple tiré de readahead (2)) :
#define
_GNU_SOURCE
#define _FILE_OFFSET_BITS 64
#include <fcntl.h>
ssize_t readahead(int fd , off_t * offset , size_t count );
This format is employed when the feature test macros ensure that the proper function declarations are visible, and the macros are not defined by default.
Macros de test de fonctionnalités comprises par la glibc
Les paragraphes suivants expliquent comment les macros de test de fonctionnalités sont gérées dans les glibc 2. x , x > 0.
Tout dâabord, un aperçu de quelques dĂ©tails pour lâimpatient :
|
- |
Les macros les plus susceptibles dâĂȘtre utilisĂ©es dans des codes source modernes sont _POSIX_C_SOURCE (pour des dĂ©finitions de diverses versions de POSIX.1), _XOPEN_SOURCE (pour des dĂ©finitions de diverses versions de SUS), _GNU_SOURCE (pour certaines choses spĂ©cifiques Ă GNU ou Linux) et _DEFAULT_SOURCE (pour obtenir des dĂ©finitions qui normalement devrait ĂȘtre fournies par dĂ©faut). |
||
|
- |
Certaines macros sont dĂ©finies avec des valeurs par dĂ©faut. Par consĂ©quent, mĂȘme si une ou plusieurs macros sont indiquĂ©es comme nĂ©cessaires dans le SYNOPSIS dâune page de manuel, il peut ne pas ĂȘtre nĂ©cessaire de les dĂ©finir explicitement. Tous les dĂ©tails sur les valeurs par dĂ©faut sont donnĂ©s ci-aprĂšs dans cette page de manuel. |
||
|
- |
DĂ©finir _XOPEN_SOURCE avec une valeur de 600 ou plus produit le mĂȘme effet que dĂ©finir _POSIX_C_SOURCE avec une valeur de 200112L ou supĂ©rieure. LorsquâapparaĂźt |
_POSIX_C_SOURCE >= 200112L
dans les nĂ©cessitĂ©s des macros de test de fonctionnalitĂ©s dans le SYNOPSIS dâune page de manuel, il est implicite que ce qui suit a le mĂȘme effet :
_XOPEN_SOURCE >= 600
|
- |
DĂ©finir _XOPEN_SOURCE avec une valeur de 700 ou plus produit le mĂȘme effet que dĂ©finir _POSIX_C_SOURCE avec une valeur de 200809L ou supĂ©rieure. LorsquâapparaĂźt |
_POSIX_C_SOURCE >= 200809L
dans les nĂ©cessitĂ©s des macros de test de fonctionnalitĂ©s dans le SYNOPSIS dâune page de manuel, il est implicite que ce qui suit a le mĂȘme effet :
_XOPEN_SOURCE >= 700
La glibc
comprend les macros de test de fonctionnalités
suivantes :
__STRICT_ANSI__
Norme C ISO. Cette macro est dĂ©finie implicitement par gcc (1) lors des appels avec, par exemple, lâindicateur -std=c99 ou -ansi .
_POSIX_C_SOURCE
Si cette macro est dĂ©finie, les en-tĂȘtes exposent les dĂ©finitions suivantes :
|
- |
La valeur 1 expose les définitions conformes à POSIX.1-1990 et C ISO (1990). |
||
|
- |
Les valeurs supérieures ou égales à 2 exposent en plus les définitions de POSIX.2-1992. |
||
|
- |
Les valeurs supérieures ou égales à 199309L exposent en plus les définitions de POSIX.1b (extensions temps-réel). |
||
|
- |
Les valeurs supérieures ou égales à 199506L exposent en plus les définitions de POSIX.1c (threads). |
||
|
- |
(Depuis la glibc 2.3.3) Les valeurs supĂ©rieures ou Ă©gales Ă 200112L exposent de plus les dĂ©finitions correspondantes Ă la spĂ©cification de base POSIX.1-2001 (sans lâextension XSI) et activent Ă©galement les fonctionnalitĂ©s C95 (depuis la glibc 2.12) et C99 (depuis la glibc 2.10) â en dâautres mots, lâĂ©quivalent de dĂ©finir _ISOC99_SOURCE . |
||
|
- |
(Depuis la glibc 2.10) Les valeurs supĂ©rieures ou Ă©gales Ă 200809L exposent de plus les dĂ©finitions correspondantes Ă la spĂ©cification de base POSIX.1-2008 (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.
Puisque cette macro est obsolĂšte, son utilisation nâest gĂ©nĂ©ralement pas documentĂ©e lors de lâexplication des nĂ©cessitĂ©s de macros de test de fonctionnalitĂ©s dans les pages de manuel.
_XOPEN_SOURCE
Si cette macro est dĂ©finie, les en-tĂȘtes exposent les dĂ©finitions suivantes :
|
- |
Si elle est définie, quelle que soit sa valeur, les définitions de POSIX.1, POSIX.2 et XPG4 sont exposées. |
||
|
- |
Les valeurs supérieures ou égales à 500 exposent les définitions de SUSv2 (UNIX 98). |
||
|
- |
(Depuis la glibc 2.2) Les valeurs supĂ©rieures ou Ă©gales Ă 600 exposent les dĂ©finitions de SUSv3 (UNIX 03, câest-Ă -dire la spĂ©cification de base POSIX.1-2001 plus lâextension XSI) et de C99. |
||
|
- |
(Depuis la glibc 2.10) Les valeurs supĂ©rieures ou Ă©gales Ă 700 exposent les dĂ©finitions de SUSv4 (câest-Ă -dire la spĂ©cification de base POSIX.1-2008 plus lâextension XSI). |
Si __STRICT_ANSI__ nâest pas dĂ©finie, ou si _XOPEN_SOURCE est dĂ©finie avec une valeur supĂ©rieure ou Ă©gale Ă 500 et que ni _POSIX_SOURCE ni _POSIX_C_SOURCE ne sont explicitement dĂ©finies, alors les macros suivantes sont implicitement dĂ©finies :
|
- |
_POSIX_SOURCE est définie à la valeur 1. |
||
|
- |
_POSIX_SOURCE est dĂ©finie dâaprĂšs la valeur de _XOPEN_SOURCE : |
_XOPEN_SOURCE < 500
_POSIX_C_SOURCE est définie à la valeur 2.
500 <= _XOPEN_SOURCE < 600
_POSIX_C_SOURCE est définie à la valeur 199506L.
600 <= _XOPEN_SOURCE < 700
_POSIX_C_SOURCE est définie à la valeur 200112L.
700 <= _XOPEN_SOURCE (depuis la glibc 2.10)
_POSIX_C_SOURCE est définie à la valeur 200809L.
De plus, dĂ©finir _XOPEN_SOURCE avec une valeur de 500 ou supĂ©rieure produit le mĂȘme effet que dĂ©finir _XOPEN_SOURCE_EXTENDED .
_XOPEN_SOURCE_EXTENDED
Si cette macro et _XOPEN_SOURCE sont dĂ©finies, exposer les dĂ©finitions correspondant aux extensions XPG4v2 (SUSv1) dâUNIX (UNIX 95). DĂ©finir _XOPEN_SOURCE avec une valeur de 500 ou supĂ©rieure produit aussi le mĂȘme effet que dĂ©finir _XOPEN_SOURCE_EXTENDED . Lâutilisation de _XOPEN_SOURCE_EXTENDED dans un nouveau code source est Ă Ă©viter.
Puisque dĂ©finir _XOPEN_SOURCE avec une valeur de 500 ou supĂ©rieure produit aussi le mĂȘme effet que dĂ©finir _XOPEN_SOURCE_EXTENDED , cette derniĂšre (obsolĂšte) macro de test de fonctionnalitĂ©s nâest gĂ©nĂ©ralement pas dĂ©crite dans le SYNOPSIS des pages de manuel.
_ISOC99_SOURCE (depuis la glibc 2.1.3)
Exposer des déclarations cohérentes avec la norme ISO C99.
Les versions antĂ©rieures de la glibc 2.1.x reconnaissaient une macro Ă©quivalente appelĂ©e _ISOC9X_SOURCE (parce que la norme C99 nâĂ©tait pas finalisĂ©e). MĂȘme si lâutilisation de cette derniĂšre macro est Ă proscrire, la glibc continue Ă la reconnaĂźtre pour des raisons de compatibilitĂ© ascendante.
Si _ISOC99_SOURCE est définie, les définitions du premier amendement au C ISO (1990) (aussi appelé C95) sont aussi exposées. La premiÚre modification de C95 était la prise en charge des jeux de caractÚres internationaux.
Invoquer le compilateur C avec lâoption -std=c99 produit le mĂȘme effet que dĂ©finir cette macro.
_ISOC11_SOURCE (depuis la glibc 2.16)
Exposer des déclarations cohérentes avec la norme ISO C11. La définition de cette macro active également les fonctionnalités C99 et C95 (comme _ISOC99_SOURCE ).
Invoquer le compilateur C avec lâoption -std=c11 produit le mĂȘme effet que dĂ©finir cette macro.
_LARGEFILE64_SOURCE
Exposer les dĂ©finitions pour lâAPI alternative dĂ©finie par le LFS (« Large File Summit ») comme une extension de transition pour la « Single UNIX Specification ». Veuillez vous rĂ©fĂ©rer Ă http://opengroup.org/platform/lfs.html . LâAPI alternative consiste en un jeu de nouveaux objets (câest-Ă -dire des fonctions et types) dont le nom est suffixĂ© avec « 64 » (par exemple off64_t pour off_t , lseek64 () pour lseek (), etc.). Les nouveaux programmes ne devraient pas utiliser cette macro ; Ă la place, _FILE_OFFSET_BITS=64 devrait ĂȘtre utilisĂ©e.
_LARGEFILE_SOURCE
Cette macro a historiquement Ă©tĂ© utilisĂ©e pour exposer certaines fonctions (en particulier fseeko () et ftello ()) qui contournent les limites dâinterfaces de programmation prĂ©cĂ©dentes ( feek () et ftell ()) qui utilisent long pour les positions de fichier. Cette macro est implicitement dĂ©finie si _XOPEN_SOURCE est dĂ©finie avec une valeur supĂ©rieure ou Ă©gale Ă 500. Les nouveaux programmes ne devraient pas utiliser cette macro. DĂ©finir _XOPEN_SOURCE comme cela vient dâĂȘtre dĂ©crit ou dĂ©finir _FILE_OFFSET_BITS Ă la valeur 64 sont les mĂ©canismes prĂ©fĂ©rĂ©s pour obtenir le mĂȘme rĂ©sultat.
_FILE_OFFSET_BITS
Defining this macro with the value 64 automatically converts references to 32-bit functions and data types related to file I/O and filesystem operations into references to their 64-bit counterparts. This is useful for performing I/O on large files (> 2 Gigabytes) on 32-bit systems. It is also useful when calling functions like copy_file_range (2) that were added more recently and that come only in 64-bit flavors. (Defining this macro permits correctly written programs to use large files with only a recompilation being required.)
Les systĂšmes 64 bits permettent dâoffice dâutiliser des fichiers de taille supĂ©rieure Ă 2 gigaoctets, et sur ces systĂšmes cette macro nâa aucun effet.
_TIME_BITS
Defining this macro with the value 64 changes the width of time_t (3type) to 64-bit which allows handling of timestamps beyond 2038. It is closely related to _FILE_OFFSET_BITS and depending on implementation, may require it set. This macro is available as of glibc 2.34.
_BSD_SOURCE (obsolÚte depuis la glibc 2.20)
Si cette macro est dĂ©finie avec nâimporte quelle valeur, les dĂ©finitions hĂ©ritĂ©es de BSD sont exposĂ©es par les en-tĂȘtes.
JusquâĂ la glibc 2.18 incluse, les dĂ©finitions BSD sont prĂ©fĂ©rĂ©es dans les situations oĂč les normes sont en conflit, sauf si au moins une des macros _SVID_SOURCE , _POSIX_SOURCE , _POSIX_C_SOURCE , _XOPEN_SOURCE , _XOPEN_SOURCE_EXTENDED ou _GNU_SOURCE est dĂ©finie, auquel cas les dĂ©finitions BSD sont dĂ©favorisĂ©es. Depuis la glibc 2.19, _BSD_SOURCE ne force plus la prĂ©fĂ©rence des dĂ©finitions BSD en cas de conflit.
Depuis la glibc 2.20, cette macro est obsolĂšte. Sa dĂ©finition a le mĂȘme effet que la dĂ©finition de _DEFAULT_SOURCE , mais gĂ©nĂšre un avertissement de compilation (Ă moins que _DEFAULT_SOURCE soit Ă©galement dĂ©finie). Utilisez _DEFAULT_SOURCE Ă la place. Pour permettre au code nĂ©cessitant _BSD_SOURCE dans glibc 2.19 et versions antĂ©rieures, et _DEFAULT_SOURCE dans glibc 2.20 et version suivantes, de compiler sans avertissement, dĂ©finissez Ă la fois _BSD_SOURCE et _DEFAULT_SOURCE .
_SVID_SOURCE (obsolÚte depuis la glibc 2.20)
Si cette macro est dĂ©finie (quelle que soit sa valeur), les en-tĂȘtes exposent les dĂ©finitions hĂ©ritĂ©es de System V. (SVID == System V Interface Definition ; consultez standards (7).)
Depuis la glibc 2.20, cette macro est obsolĂšte de la mĂȘme maniĂšre que _BSD_SOURCE .
_DEFAULT_SOURCE (depuis la glibc 2.19)
Cette macro peut ĂȘtre dĂ©finie pour sâassurer que les dĂ©finitions par « dĂ©faut » sont fournies mĂȘme si les valeurs par dĂ©faut avaient Ă©tĂ© dĂ©sactivĂ©es, comme cela arrive quand les macros individuelles sont dĂ©finies explicitement ou quand le compilateur est appelĂ© dans un de ses modes « normalisĂ©s » (par exemple cc -std=c99 ). DĂ©finir _DEFAULT_SOURCE nâa aucun effet sans dĂ©finir dâautres macros individuelles ou invoquer le compilateur dans un de ses modes « normalisĂ©s ».
Les définitions par « défaut » incluent celles requises par POSIX.1-2008 et C99 ISO ainsi que plusieurs définitions dérivées de BSD et System V. Avec la glibc 2.19 et avant, ces définitions par défaut sont à peu prÚs équivalentes à la définition explicite suivante :
cc -D_BSD_SOURCE -D_SVID_SOURCE -D_POSIX_C_SOURCE=200809
_ATFILE_SOURCE (depuis la glibc 2.4)
Si cette macro est dĂ©finie (quelle que soit sa valeur), les en-tĂȘtes exposent les dĂ©finitions dâune sĂ©rie de fonctions avec le suffixe « at » ; consultez openat (2). Depuis glibc 2.10, cette macro est aussi dĂ©finie de maniĂšre implicite si _POSIX_C_SOURCE est dĂ©finie avec une valeur supĂ©rieure ou Ă©gale Ă 200809L.
_GNU_SOURCE
DĂ©finir cette macro (avec nâimporte quelle valeur) dĂ©finit implicitement _ATFILE_SOURCE , _LARGEFILE64_SOURCE , _ISOC99_SOURCE , _XOPEN_SOURCE_EXTENDED , _POSIX_SOURCE , _POSIX_C_SOURCE avec la valeur 200809L (200112L avant la glibc 2.10, 199506L avant la glibc 2.5, 199309L glibc 2.1) et _XOPEN_SOURCE avec la valeur 700 (600 la glibc 2.10, 500 avant la glibc 2.2). De plus, de nombreuses extensions spĂ©cifiques GNU sont exposĂ©es.
Depuis la glibc 2.19, définir _GNU_SOURCE provoque la définition implicite de _DEFAULT_SOURCE . Avant la glibc 2.20, définir _GNU_SOURCE provoque la définition implicite de _BSD_SOURCE et _SVID_SOURCE .
_REENTRANT
Historiquement, dans diverses bibliothĂšques C il Ă©tait nĂ©cessaire de dĂ©finir cette macro dans tous les codes multithread (cela peut ĂȘtre encore nĂ©cessaire dans quelques bibliothĂšques C). Dans la glibc, cette macro expose aussi des dĂ©finitions de certaines fonctions rĂ©entrantes.
Cependant, la glibc est thread-safe par dĂ©faut depuis de nombreuses annĂ©es. Depuis la glibc 2.3, le seul effet de dĂ©finir _REENTRANT est dâactiver une ou deux des mĂȘmes dĂ©clarations qui sont activĂ©es en dĂ©finissant _POSIX_C_SOURCE avec une valeur 199606L ou supĂ©rieure.
_REENTRANT est dĂ©sormais obsolĂšte. Dans la glibc 2.25 et les versions postĂ©rieures, dĂ©finir _REENTRANT est Ă©quivalent Ă dĂ©finir _POSIX_C_SOURCE avec comme valeur 199606L. Si un niveau de conformitĂ© POSIX supĂ©rieur est sĂ©lectionnĂ© par nâimporte quel autre moyen (tel que _POSIX_C_SOURCE lui-mĂȘme, _XOPEN_SOURCE , _DEFAULT_SOURCE ou _GNU_SOURCE ), puis dĂ©finir _REENTRANT nâa aucun effet.
Cette macro est automatiquement définie si la compilation est faite avec cc -pthread .
_THREAD_SAFE
Synonyme de _REENTRANT (obsolĂšte), fourni pour la compatibilitĂ© avec dâautres implĂ©mentations.
_FORTIFY_SOURCE (depuis la glibc 2.3.4)
DĂ©finir cette macro cause certaines vĂ©rifications peu poussĂ©es dâĂȘtre rĂ©alisĂ©es pour dĂ©tecter quelques dĂ©passements de tampon lors de lâemploi de diverses chaĂźnes et de fonctions de manipulation de mĂ©moire (par exemple, memcpy (3), memset (3), stpcpy (3), strcpy (3), strncpy (3), strcat (3), strncat (3), sprintf (3), snprintf (3), vsprintf (3), vsnprintf (3), gets (3) et les variantes de caractĂšres larges de celles-ci). Pour certaines fonctions, la pertinence de lâargument est vĂ©rifiĂ©e. Par exemple, une vĂ©rification est faite quâun argument mode soit fourni Ă open (2) quand les indicateurs indiquĂ©s incluent O_CREAT . Tous les problĂšmes ne sont pas dĂ©tectĂ©s, seulement quelques cas courants.
Si _FORTIFY_SOURCE est dĂ©fini Ă 1, avec un niveau 1 dâoptimisation de compilateur ( gcc -O1 ) ou supĂ©rieur, des vĂ©rifications sans influence sur le comportement de programmes conformes 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 lors de la compilation (Ă lâaide dâune logique de macros implĂ©mentĂ©s dans les en-tĂȘtes) et gĂ©nĂšrent des avertissements du compilateur. Dâautres vĂ©rifications ont lieu Ă lâexĂ©cution et causent une erreur si le test Ă©choue.
With _FORTIFY_SOURCE set to 3, additional checking is added to intercept some function calls used with an argument of variable size where the compiler can deduce an upper bound for its value. For example, a program where malloc (3)âs size argument is variable can now be fortified.
Use of this macro requires compiler support, available since gcc 4.0 and clang 2.6. Use of _FORTIFY_SOURCE set to 3 requires gcc 12.0 or later, or clang 9.0 or later, in conjunction with glibc 2.33 or later.
Définitions par défaut, définitions implicites et combinaison dedéfinitions
Si aucune macro de test de fonctionnalitĂ©s nâest dĂ©finie explicitement, alors les macros de test suivantes sont dĂ©finies par dĂ©faut : _BSD_SOURCE (dans la glibc 2.19 et avant), _SVID_SOURCE (dans la glibc 2.19 et avant), _DEFAULT_SOURCE (depuis la glibc 2.19), _POSIX_SOURCE et _POSIX_C_SOURCE =200809L (200112L avant la glibc 2.10, 199506L avant la glibc 2.4, 199309L avant la glibc 2.1).
Si une des macros __STRICT_ANSI__ , _ISOC99_SOURCE , _ISOC11_SOURCE (depuis la glibc 2.18) _POSIX_SOURCE , _POSIX_C_SOURCE , _XOPEN_SOURCE , _XOPEN_SOURCE_EXTENDED (dans la glibc 2.11 et avant), _BSD_SOURCE (dans la glibc 2.19 et avant) ou _SVID_SOURCE (dans la glibc 2.19 et avant) est définie explicitement, alors _BSD_SOURCE , _SVID_SOURCE et _DEFAULT_SOURCE ne sont pas définies par défaut.
Si ni _POSIX_SOURCE ni _POSIX_C_SOURCE ne sont dĂ©finies explicitement et que soit __STRICT_ANSI__ nâest pas dĂ©finie soit _XOPEN_SOURCE est dĂ©finie Ă une valeur supĂ©rieure ou Ă©gale Ă 500, alors
|
- |
_POSIX_SOURCE est définie à la valeur 1 |
|||
|
- |
_POSIX_C_SOURCE est définie avec une des valeurs suivantes : |
-
|
2, si _XOPEN_SOURCE est définie avec une valeur inférieure à 500 ; |
|||
|
- |
199506L, si _XOPEN_SOURCE est définie à une valeur supérieure ou égale à 500 et inférieure à 600, ou |
||
|
- |
200112L (depuis la glibc 2.4), si _XOPEN_SOURCE est définie à une valeur supérieure ou égale à 600 et inférieure à 700 ; |
||
|
- |
200809L (depuis la glibc 2.10), si _XOPEN_SOURCE est définie à une valeur supérieure ou égale à 700. |
||
|
- |
Les versions plus anciennes de la glibc ne connaissent pas les valeurs 200112L et 200809L pour _POSIX_C_SOURCE et la configuration de cette macro dépendra de la version de la glibc. |
||
|
- |
Si _XOPEN_SOURCE nâest pas dĂ©fini, alors la configuration de _POSIX_C_SOURCE dĂ©pend de la version de la glibc : 199506L avant la glibc 2.4, 200112L de la glibc 2.4 Ă la glibc 2.9 et 200809L depuis la glibc 2.10. |
Plusieurs macros peuvent ĂȘtre dĂ©finies, les rĂ©sultats sont additifs.
STANDARDS
POSIX.1 spécifie _POSIX_C_SOURCE , _POSIX_SOURCE et _XOPEN_SOURCE .
_FILE_OFFSET_BITS nâest spĂ©cifiĂ©e par aucune norme, mais est employĂ©e dans quelques autres implĂ©mentations.
_BSD_SOURCE , _SVID_SOURCE , _DEFAULT_SOURCE , _ATFILE_SOURCE , _GNU_SOURCE , _FORTIFY_SOURCE , _REENTRANT et _THREAD_SAFE sont spécifiques à la glibc.
HISTORIQUE
_XOPEN_SOURCE_EXTENDED Ă©tait spĂ©cifiĂ©e par XPG4v2 (câest-Ă -dire SUSv1), mais nâest pas prĂ©sente dans SUSv2 et les versions suivantes.
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Ă©s.
Selon quelles macros de test de fonctionnalitĂ©s 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 de soulignement (par exemple __USE_MISC ). Les programmes ne doivent jamais dĂ©finir ces macros directement ; ils doivent utiliser les macros de test de fonctionnalitĂ©s de la liste prĂ©cĂ©dente.
EXEMPLES
Le programme ci-dessous peut ĂȘtre utilisĂ© pour explorer comment les diffĂ©rentes macros de test de fonctionnalitĂ©s sont configurĂ©es en fonction de la version de la glibc et quelle macros sont explicitement dĂ©finies. LâexĂ©cution qui suit dans un interprĂ©teur de commandes, sur un systĂšme avec la glibc 2.10, montre quelques exemples de ce quâon peut voir :
$
cc
ftm.c
$
./a.out
_POSIX_SOURCE defined
_POSIX_C_SOURCE defined: 200809L
_BSD_SOURCE defined
_SVID_SOURCE defined
_ATFILE_SOURCE defined
$
cc -D_XOPEN_SOURCE=500 ftm.c
$
./a.out
_POSIX_SOURCE defined
_POSIX_C_SOURCE defined: 199506L
_XOPEN_SOURCE defined: 500
$
cc -D_GNU_SOURCE ftm.c
$
./a.out
_POSIX_SOURCE defined
_POSIX_C_SOURCE defined: 200809L
_ISOC99_SOURCE defined
_XOPEN_SOURCE defined: 700
_XOPEN_SOURCE_EXTENDED defined
_LARGEFILE64_SOURCE defined
_BSD_SOURCE defined
_SVID_SOURCE defined
_ATFILE_SOURCE defined
_GNU_SOURCE defined
Source du programme
/* ftm.c */
#include <stdint.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
#ifdef _POSIX_SOURCE
printf("_POSIX_SOURCE defined\n");
#endif
#ifdef _POSIX_C_SOURCE
printf("_POSIX_C_SOURCE defined: %jdL\n",
(intmax_t) _POSIX_C_SOURCE);
#endif
#ifdef _ISOC99_SOURCE
printf("_ISOC99_SOURCE defined\n");
#endif
#ifdef _ISOC11_SOURCE
printf("_ISOC11_SOURCE defined\n");
#endif
#ifdef _XOPEN_SOURCE
printf("_XOPEN_SOURCE defined: %d\n",
_XOPEN_SOURCE);
#endif
#ifdef _XOPEN_SOURCE_EXTENDED
printf("_XOPEN_SOURCE_EXTENDED defined\n");
#endif
#ifdef _LARGEFILE64_SOURCE
printf("_LARGEFILE64_SOURCE defined\n");
#endif
#ifdef _FILE_OFFSET_BITS
printf("_FILE_OFFSET_BITS defined: %d\n",
_FILE_OFFSET_BITS);
#endif
#ifdef _TIME_BITS
printf("_TIME_BITS defined: %d\n", _TIME_BITS);
#endif
#ifdef _BSD_SOURCE
printf("_BSD_SOURCE defined\n");
#endif
#ifdef _SVID_SOURCE
printf("_SVID_SOURCE defined\n");
#endif
#ifdef _DEFAULT_SOURCE
printf("_DEFAULT_SOURCE defined\n");
#endif
#ifdef _ATFILE_SOURCE
printf("_ATFILE_SOURCE defined\n");
#endif
#ifdef _GNU_SOURCE
printf("_GNU_SOURCE defined\n");
#endif
#ifdef _REENTRANT
printf("_REENTRANT defined\n");
#endif
#ifdef _THREAD_SAFE
printf("_THREAD_SAFE defined\n");
#endif
#ifdef _FORTIFY_SOURCE
printf("_FORTIFY_SOURCE defined\n");
#endif
exit(EXIT_SUCCESS);
}
VOIR AUSSI
libc (7), standards (7), system_data_types (7)
La section « Feature Test Macros » de info libc .
/usr/include/features.h
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .