Provided by: manpages-de_1.11-1_all bug

BEZEICHNUNG

       feature_test_macros - Feature-Test-Makros

ÜBERSICHT

       #include <features.h>

BESCHREIBUNG

       Mit   Feature-Test-Makros   kann   der  Programmierer  steuern,  welche  Definitionen  aus
       System-Header-Dateien bei der Kompilierung eines Programms verwendet werden.

       HINWEIS: Um wirksam zu sein, muss die Definition eines  Feature-Test-Makros  im  Quelltext
       vor  den  #include-Anweisungen  für  die  Header-Dateien  stehen.  Dies  kann  entweder im
       Kompilierbefehl (cc -DMACRO=value) oder durch die  Definition  des  Makros  innerhalb  des
       Quellcodes vor dem Einlesen aller Header erreicht werden.

       Einige  Feature-Test-Makros helfen bei der Erstellung von portablen Anwendungen, indem sie
       die  Verwendung  nicht  standardgemäßer  Definitionen  verhindern.  Andere  Makros  können
       verwendet   werden,   um   gezielt  nicht  standardisierte  Definitionen,  die  sonst  per
       Voreinstellung nicht verwendet werden, zu verwenden. Die genauen Auswirkungen jedes der im
       Folgenden  beschriebenen  Feature-Test-Makros können Sie durch Auswertung der Header-Datei
       <features.h> ermitteln.

   Spezifikation der Funktion-Test-Makro-Anforderungen in Handbuchseiten
       Wenn eine  Funktion  die  Definition  eines  Feature-Test-Makros  erfordert,  enthält  die
       ÜBERSICHT  einer  Handbuchseit  in  der  Regel  einen  Vermerk  der folgenden Form (dieses
       Beispiel finden Sie in der Handbuchseite von acct(2)):

               #include <unistd.h>

               int acct(const char *filename);

           Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

               acct(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

       Das || bedeutet, dass zwecks Ermittlung der Deklaration von acct(2)  aus  <unistd.h>  eine
       der beiden folgenden Makro-Definitionen vor dem Einfügen jeglicher Header-Dateien erfolgen
       muss:

              #define _BSD_SOURCE
              #define _XOPEN_SOURCE        /* oder jeder Wert < 500 */

       Alternativ können gleichwertige Definitionen in den Kompilierbefehl eingebettet werden:

              cc -D_BSD_SOURCE
              cc -D_XOPEN_SOURCE           # Oder jeder Wert < 500

       Beachten Sie, dass einige Feature-Test-Makros standardmäßig definiert sind. Daher  ist  es
       nicht  immer erforderlich, die in der ÜBERSICHT angegebenen Feature-Test-Makro(s) explizit
       anzugeben. Einzelheiten finden Sie weiter unten.

       In wenigen Fällen verwenden  Handbuchseiten  eine  Abkürzung  für  die  Anforderungen  der
       Feature-Test-Makros (dieses Beispiel stammt aus readahead(2)):

              #define _GNU_SOURCE
              #include <fcntl.h>

              ssize_t readahead(int fd, off64_t *offset, size_t count);

       Dieses  Format  wird  immer  dann angewendet, wenn nur ein einziges Feature-Test-Makro die
       Verwendung  der  Funktions-Deklaration  ermöglicht  und  das  Makro  nicht   standardmäßig
       definiert wird.

   Von Glibc »verstandene« Feature-Test-Makros
       Im  Folgenden wird erläutert, wie Feature-Test-Makros in Linux-Glibc 2.x, x > 0, behandelt
       werden.

       Die Linux-Glibc »versteht« die folgenden Feature-Test-Makros:

       __STRICT_ANSI__
              ISO Standard C. Dieses Makro wird impliziert definiert, wenn gcc(1)  beispielsweise
              mit den Schaltern -std=c99 oder -ansi aufgerufen wird.

       _POSIX_C_SOURCE
              Mit  der  Definition  dieses  Makros  stellen Header-Dateien Definitionen wie folgt
              bereit:

              •  Der Wert 1 aktiviert Definitionen gemäß POSIX.1-1990 und ISO C (1990).

              •  Ein Wert gleich oder  größer  als  2  aktiviert  zusätzlich  Definitionen  gemäß
                 POSIX.2-1992.

              •  Der   Wert   199309L   oder   größer   aktiviert   Definitionen  gemäß  POSIX.1b
                 (Echtzeiterweiterungen).

              •  Der Wert 199506L oder größer aktiviert Definitionen gemäß POSIX.1c (Threads).

              •  (Seit  Glibc  2.3.3)  Der  Wert  200112L  oder   größer   aktiviert   zusätzlich
                 Definitionen    gemäß    der   POSIX.1-2001   Base   Specification   (ohne   die
                 XSI-Erweiterung) und führt auch zur Aktivierung von C95- (seit Glibc  2.12)  und
                 C99 (seit Glibc 2.10) Funktionalitäten.

              •  (Seit Glibc 2.10) Der Wert 200809L oder größer aktiviert zusätzlich Definitionen
                 gemäß der POSIX.1-2008 Base Specification (ohne die XSI-Erweiterung).

       _POSIX_SOURCE
              Die Definition dieses überholten Makros mit einem beliebigen Wert hat  die  gleiche
              Wirkung wie die Definition von _POSIX_C_SOURCE mit dem Wert 1.

       _XOPEN_SOURCE
              Mit  der  Definition  dieses  Makros  stellen Header-Dateien Definitionen wie folgt
              bereit:

              •  Die Zuweisung eines  beliebigen  Wertes  aktiviert  Definitionen  nach  POSIX.1,
                 POSIX.2 und XPG4.

              •  Der  Wert  500 oder größer aktiviert zusätzlich die Definitionen für SUSv2 (UNIX
                 98).

              •  (Seit Glibc 2.2) Der Wert 600 oder größer aktiviert zusätzlich Definitionen  für
                 SUSv3   (UNIX   03,   also   die   POSIX.1-2001   Base   Specification  und  die
                 XSI-Erweiterung) sowie C99-Definitionen.

              •  (Seit Glibc 2.10) Der Wert 700 oder größer aktiviert zusätzlich Definitionen für
                 SUSv4 (d.h. die POSIX.1-2001 Base Specification und die XSI-Erweiterung).

              Falls  __STRICT_ANSI__  nicht  definiert  ist  oder  _XOPEN_SOURCE  mit  einem Wert
              identisch zu oder größer als  500  und  weder  _POSIX_SOURCE  noch  _POSIX_C_SOURCE
              explizit definiert sind dann werden die folgenden Makros implizit definiert:

              •  _POSIX_SOURCE wird auf den Wert 1 gesetzt.

              •  _POSIX_C_SOURCE wird definiert, entsprechend des Wertes von _XOPEN_SOURCE:

                     _XOPEN_SOURCE < 500
                            _POSIX_SOURCE wird auf den Wert 2 gesetzt.

                     500 <= _XOPEN_SOURCE < 600
                            _POSIX_SOURCE wird auf den Wert 199506L gesetzt.

                     600 <= _XOPEN_SOURCE < 700
                            _POSIX_SOURCE wird auf den Wert 200112L gesetzt.

                     700 <= _XOPEN_SOURCE (seit Glibc 2.10)
                            _POSIX_SOURCE wird auf den Wert 200809L gesetzt.

       _XOPEN_SOURCE_EXTENDED
              Wenn  dieses  Makro  und  _XOPEN_SOURCE  definiert  sind,  dann werden Definitionen
              entsprechend den XPG4v2- (SUSv1-)UNIX-Erweiterungen  (UNIX  95)  aktiviert.  Dieses
              Makro wird auch implizit definiert, wenn _XOPEN_SOURCE ein Wert von 500 oder größer
              zugewiesen wird.

       _ISOC99_SOURCE (seit Glibc 2.1.3)
              Aktiviert Deklarationen, die mit dem ISO-C99-Standard konsistent sind.

              Frühere Glibc 2.1.x-Versionen verarbeiteten ein gleichwertiges Makro _ISOC9X_SOURCE
              (weil  der C99-Standard noch nicht fertig war). Obwohl die Verwendung dieses Makros
              obsolet ist, wird es von der Glibc weiter zwecks Abwärtskompatibilität unterstützt.

              Die Definition von _ISOC99_SOURCE aktiviert auch ISO C (1990) Anhang 1-Definitionen
              (»C95«).   (Die   hauptsächliche   Änderung   in  C95  war  die  Unterstützung  für
              internationale Zeichensätze.)

       _ISOC11_SOURCE (seit Glibc 2.16)
              Aktiviert  Deklarationen,  die  mit  dem  ISO-C11-Standard  konsistent  sind.   Die
              Definition   dieses  Makros  aktiviert  auch  C99-  und  C95-Funktionalitäten  (wie
              _ISOC99_SOURCE).

       _LARGEFILE64_SOURCE
              Aktiviert Definitionen für das durch LFS (Large File Summit) definierte alternative
              API als »Übergangserweiterungen« zu der »Single UNIX Specification«. (Siehe ⟨http:/
              /opengroup.org/platform/lfs.html⟩.) Das alternative API besteht aus einer Reihe von
              neuen  Objekten  (d.h.  Funktionen  und  Typen),  deren Namen mit »64« endet (z. B.
              off64_t versus off_t, lseek64()  versus  lseek(),  usw.).  Neue  Programme  sollten
              dieses Makro nicht verwenden, sondern _FILE_OFFSET_BITS=64 einsetzen.

       _LARGEFILE_SOURCE
              Dieses  Makro  wurde  traditionell  verwandt, um bestimmte Funktionen (insbesondere
              fseeko(3) und ftello(3)) bereitzustellen, die sich um Beschränkungen  älterer  APIs
              (fseek(3)  und  ftell(3))  kümmerten,  die  long  int für Datei-Offsets verwandten.
              Dieses Makro ist implizit definiert, falls _XOPEN_SOURCE mit einem Wert gleich oder
              größer  als 500 definiert ist. Neue Programme sollten dieses Makro nicht einsetzen;
              um das gleiche Ergebnis zu erhalten, ist der empfohlene Mechanismus,  _XOPEN_SOURCE
              wie gerade beschrieben oder _FILE_OFFSET_BITS mit einem Wert von 64 zu definieren.

       _FILE_OFFSET_BITS
              Wird  diesem  Makro  der  Wert  64  zugewiesen,  werden  automatisch  Verweise  auf
              32-Bit-Funktionen und -Datentypen für Datei-Ein/Ausgabe und Dateisystem-Operationen
              in  Verweise auf ihre 64-Bit-Pendants konvertiert. Dies ist für die Ein-/Ausgabe in
              und aus großen Dateien (>  2  Gigabyte)  auf  32-Bit-Systemen  nützlich.  (Mit  der
              Definition dieses Makros können korrekt geschriebene Programme nach einer einfachen
              Neukompilierung große Dateien bearbeiten.)

              64-Bit-Systeme erlauben natürlich Dateigrößen größer als  2  Gigabyte.  Auf  diesen
              Systemen dieses Makro hat keine Wirkung.

       _BSD_SOURCE (misbilligt seit Glibc 2.20)
              Mit  der  Definition  dieses  Makros  mit  irgend einem Wert stellen Header-Dateien
              BSD-abgeleitete Definitionen bereit.

              In Glibc bis einschließlich 2.18 bewirkte die Definition dieses Makros  auch,  dass
              BSD-Definitionen  in  manchen  Situationen  vorgezogen  werden, wenn sich Standards
              widersprechen. Sind aber eines oder mehrere Makros  aus  der  Gruppe  _SVID_SOURCE,
              _POSIX_SOURCE,    _POSIX_C_SOURCE,   _XOPEN_SOURCE,   _XOPEN_SOURCE_EXTENDED   oder
              _GNU_SOURCE definiert, werden BSD-Definitionen missachtet. Seit  Glibc  2.19  führt
              _BSD_SOURCE  nicht  mehr  dazu,  dass  BSD-Definitionen  im  Konfliktfall bevorzugt
              werden.

              Seit Glibc 2.20 wird dieses Makro misbilligt. Es hat jetzt den gleichen Effekt  wie
              die  Definition  von  _DEFAULT_SOURCE,  erzeugt  aber  eine Compiler-Warnung (außer
              _DEFAULT_SOURCE ist auch definiert). Verwenden Sie stattdessen _DEFAULT_SOURCE.  Um
              Code  zu  erlauben,  der in Glibc 2.19 und älter _BSD_SOURCE und _DEFAULT_SOURCE in
              Glibc 2.20 und neuer benötigt, um ohne Warnung übersetzt zu werden, definieren  Sie
              sowohl _BSD_SOURCE als auch _DEFAULT_SOURCE.

       _SVID_SOURCE (misbilligt seit Glibc 2.20)
              Die  Definition  dieses  Makros mit einem beliebigen Wert veranlasst Header-Dateien
              zur Aktivierung von von System V abgeleiteten Definitionen. (SVID steht für  System
              V Interface Definition; siehe standards(7).)

              Dieses Makro wird in der gleichen Art wie _BSD_SOURCE seit Glibc 2.20 misbilligt.

       _DEFAULT_SOURCE (seit Glibc 2.19)
              Dieses    Makro    kann    definiert   werden,   um   sicherzustellen,   dass   die
              »Standarddefinitionen« bereitgestellt werden, selbst wenn  die  Vorgaben  ansonsten
              deaktiviert würden. Dies passiert beispielsweise, wenn individuelle Makros explizit
              definiert sind oder der Compiler in einem  seiner  »Standardmodi«  aufgerufen  wird
              (z.B. cc -std=c99).

              Die »Standard«-Definition umfasst die von POSIX.1-2008 umfassten sowie verschiedene
              aus BDS und System V abgeleitete Definitionen. In Glibc 2.19 und älter waren  diese
              Standardwerte ungefähr zu der folgenden, expliziten Definition identisch:

                  cc -D_BSD_SOURCE -D_SVID_SOURCE -D_POSIX_C_SOURCE=200809

       _ATFILE_SOURCE (seit Glibc 2.4)
              Die  Definition  dieses  Makros mit einem beliebigen Wert veranlasst Header-Dateien
              zur Aktivierung einer Auswahl von Funktion mit der Endung  »at«,  siehe  openat(2).
              Seit Glibc 2.10 wird dieses Makro auch implizit definiert, wenn _POSIX_C_SOURCE mit
              einem Wert größer oder gleich 200809L definiert ist.

       _GNU_SOURCE
              Die Definition  dieses  Makros  (mit  einem  beliebigen  Wert)  definiert  implizit
              _ATFILE_SOURCE,    _LARGEFILE64_SOURCE,   _ISOC99_SOURCE,   _XOPEN_SOURCE_EXTENDED,
              _POSIX_SOURCE, _POSIX_C_SOURCE mit dem Wert 200809L (200112L in Glibc-Versionen vor
              2.10;  199506L  in Glibc-Versionen vor 2.5; 199309L in Glibc-Versionen vor 2.1) und
              _XOPEN_SOURCE  mit  dem  Wert  700  (600  in  Glibc-Versionen  vor  2.10;  500   in
              Glibc-Versionen  vor  2.2).  Darüber  hinaus  werden  verschiedene  GNU-spezifische
              Erweiterungen aktiviert.

              Seit Glibc 2.19 hat die Definition von _GNU_SOURCE auch den Effekt, _DEFAULT_SOURCE
              implizit  zu  definieren.  In  Glibc-Versionen  vor  2.20  hatte die Definition von
              _GNU_SOURCE auch den Effekt, _BSD_SOURCE und _SVID_SOURCE implizit zu definieren.

       _REENTRANT
              Die Definition dieses Makros aktiviert bestimmte wiedereintrittsfähige  Funktionen.
              Für Multithread-fähige Programm verwenden Sie stattdessen cc -pthread.

       _THREAD_SAFE
              Synonym   für   _REENTRANT;   wird  für  die  Kompatibilität  mit  einigen  anderen
              Implementierungen bereitgestellt.

       _FORTIFY_SOURCE (seit Glibc 2.3.4)
              Defining this macro causes some lightweight checks to be performed to  detect  some
              buffer  overflow  errors  when  employing  various  string  and memory manipulation
              functions (for example, memcpy(3),  memset(3),  stpcpy(3),  strcpy(3),  strncpy(3),
              strcat(3), strncat(3), sprintf(3), snprintf(3), vsprintf(3), vsnprintf(3), gets(3),
              and wide character variants thereof). For some functions, argument  consistency  is
              checked;  for  example, a check is made that open(2)  has been supplied with a mode
              argument when the specified flags include O_CREAT. Not all problems  are  detected,
              just some common cases.

              Ist  der  Wert  von  _FORTIFY_SOURCE  gleich 1 und die Compiler-Optimierungsstufe 1
              (gcc -O1) oder höher, erfolgt eine Beschränkung auf Kontrollen, die  das  Verhalten
              standardkonformer  Programme  nicht  ändern  sollten.  Wird  _FORTIFY_SOURCE  auf 2
              gesetzt, werden ein  paar  Kontrollen  hinzugefügt,  die  aber  Fehler  in  einigen
              standardkonformen Programmen bewirken könnten.

              Einige  der  Prüfungen  können  bei  der Kompilierung ausgeführt werden (mittels in
              Header-Dateien implementierter Makrologik) und führen zu Compiler-Warnungen, andere
              Kontrollen  finden  zur Laufzeit statt und führen zu einem Laufzeitfehler, wenn die
              Überprüfung fehlschlägt.

              Die Verwendung dieses Makros benötigt die Unterstützung durch den  Compiler.  Diese
              ist in gcc(1) seit Version 4.0 verfügbar.

   Standarddefinitionen, implizite Definitionen und Kombinationsdefinitionen
       Ohne   explizit   definierte   Feature-Test-Makros   werden  standardmäßig  die  folgenden
       Feature-Test-Makros definiert: _BSD_SOURCE (in Gblic 2.19  und  älter),  _SVID_SOURCE  (in
       Glibc    2.19   und   älter),   _DEFAULT_SOURCE   (seit   Glibc   2.19)_POSIX_SOURCE   und
       _POSIX_C_SOURCE=200809L (200112L in Glibc-Versionen vor 2.10; 199506L  in  Glibc-Versionen
       vor 2.4; 199309L in Glibc-Versionen vor 2.1).

       Wenn   eines   von   __STRICT_ANSI__,   _ISOC99_SOURCE,   _POSIX_SOURCE,  _POSIX_C_SOURCE,
       _XOPEN_SOURCE,  _XOPEN_SOURCE_EXTENDED,  _BSD_SOURCE  (in  Glibc  2.19  und  älter)   oder
       _SVID_SOURCE  (in  Glibc 2.19 und älter) explizit definiert ist, dann werden standardmäßig
       _BSD_SOURCE, _SVID_SOURCE und _DEFAULT_SOURCE nicht definiert.

       Sind  _POSIX_SOURCE  und   _POSIX_C_SOURCE   nicht   explizit   definiert   und   entweder
       __STRICT_ANSI__  ist  nicht definiert oder _XOPEN_SOURCE hat einen Wert von 500 oder mehr,
       dann

       *  wird _POSIX_SOURCE auf den Wert 1 gesetzt und

       *  _POSIX_C_SOURCE erhält einen der folgenden Werte:

          •  2, falls _XOPEN_SOURCE mit einem Wert kleiner als 500 definiert ist;

          •  199506L, falls _XOPEN_SOURCE mit einem Wert größer oder gleich 500 und  kleiner  als
             600 definiert ist; oder

          •  (Seit  Glibc 2.4) 200112L, falls _XOPEN_SOURCE mit einem Wert größer oder gleich 600
             und kleiner als 700 definiert ist.

          •  (Seit Glibc 2.4) 200809L, falls _XOPEN_SOURCE mit einem Wert größer oder gleich  700
             definiert ist.

          •  Ältere  Versionen von Glibc kennen die Werte 200112L und 200809L für _POSIX_C_SOURCE
             nicht, der Wert für das Makro hängt also von der Glibc-Version ab.

          •  Wenn _XOPEN_SOURCE nicht definiert ist, hängt der zulässige Wert von _POSIX_C_SOURCE
             von der Glibc-Version ab: 199506L für Glibc-Versionen vor 2.4; 200112L für Glibc 2.4
             bis 2.9 und 200809L seit Glibc 2.10.

       Es können mehrere Makros definiert werden, die Effekte akkumulieren sich.

KONFORM ZU

       POSIX.1 legt _POSIX_C_SOURCE, _POSIX_SOURCE und _XOPEN_SOURCE fest. _XOPEN_SOURCE_EXTENDED
       wurde von XPG4v2 (auch bekannt als SUSv1) spezifiziert.

       _FILE_OFFSET_BITS  kommt  in  keinem  Standard  vor,  wird  aber auf verschiedenen anderen
       Implementierungen verwendet.

       _BSD_SOURCE, _SVID_SOURCE, _DEFAULT_SOURCE, _ATFILE_SOURCE, _GNU_SOURCE,  _FORTIFY_SOURCE,
       _REENTRANT und _THREAD_SAFE sind Linux-spezifisch (Glibc).

ANMERKUNGEN

       <features.h>  ist  eine Linux/Glibc-spezifische Header-Datei. Andere Systeme verfügen über
       eine analoge Datei, die in der Regel einen anderen Namen trägt.  Diese  Header-Datei  wird
       bei  Bedarf  automatisch  durch  andere Header-Dateien einbezogen: sie muss nicht explizit
       einbezogen werden, um Feature-Test-Makros zu verwenden.

       Je nachdem, welche  der  oben  genannten  Feature-Test-Makros  definiert  sind,  definiert
       <features.h>  intern  verschiedene  weitere  Makros,  die von anderen Glibc-Header-Dateien
       überprüft werden. Die Namen dieser Makros beginnen mit zwei vorangestellten  Unterstrichen
       (z.  B.  __USE_MISC).  Programme  sollten  diese Makros nie direkt definieren: stattdessen
       sollten die passenden Feature-Test-Makro(s) aus der obigen Liste eingesetzt werden.

BEISPIEL

       Mit dem folgenden Programm können Sie erkunden, wie die verschiedenen  Feature-Test-Makros
       abhängig   von  der  Glibc-Version  und  welche  explizit  gesetzt  werden.  Die  folgende
       Shell-Sitzung auf einem  System  mit  Glibc  2.10  zeigt  einige  Beispiele  für  mögliche
       Ausgaben:

           $ cc ftm.c
           $ ./a.out
           _POSIX_SOURCE definiert
           _POSIX_C_SOURCE definiert: 200809L
           _BSD_SOURCE definiert
           _SVID_SOURCE definiert
           _ATFILE_SOURCE definiert
           $ cc -D_XOPEN_SOURCE=500 ftm.c
           $ ./a.out
           _POSIX_SOURCE definiert
           _POSIX_C_SOURCE definiert: 199506L
           _XOPEN_SOURCE definiert: 500
           $ cc -D_GNU_SOURCE ftm.c
           $ ./a.out
           _POSIX_SOURCE definiert
           _POSIX_C_SOURCE definiert: 200809L
           _ISOC99_SOURCE definiert
           _XOPEN_SOURCE definiert: 700
           _XOPEN_SOURCE_EXTENDED definiert
           _LARGEFILE64_SOURCE definiert
           _BSD_SOURCE definiert
           _SVID_SOURCE definiert
           _ATFILE_SOURCE definiert
           _GNU_SOURCE definiert

   Programmquelltext

       /* ftm.c */

       #include <stdio.h>
       #include <unistd.h>
       #include <stdlib.h>

       int
       main(int argc, char *argv[])
       {
       #ifdef _POSIX_SOURCE
           printf("_POSIX_SOURCE definiert\n");
       #endif

       #ifdef _POSIX_C_SOURCE
           printf("_POSIX_C_SOURCE definiert: %ldL\n", (long) _POSIX_C_SOURCE);
       #endif

       #ifdef _ISOC99_SOURCE
           printf("_ISOC99_SOURCE definiert\n");
       #endif

       #ifdef _ISOC11_SOURCE
           printf("_ISOC11_SOURCE definiert\n");
       #endif

       #ifdef _XOPEN_SOURCE
           printf("_XOPEN_SOURCE definiert: %d\n", _XOPEN_SOURCE);
       #endif

       #ifdef _XOPEN_SOURCE_EXTENDED
           printf("_XOPEN_SOURCE_EXTENDED definiert\n");
       #endif

       #ifdef _LARGEFILE64_SOURCE
           printf("_LARGEFILE64_SOURCE definiert\n");
       #endif

       #ifdef _FILE_OFFSET_BITS
           printf("_FILE_OFFSET_BITS definiert: %d\n", _FILE_OFFSET_BITS);
       #endif

       #ifdef _BSD_SOURCE
           printf("_BSD_SOURCE definiert\n");
       #endif

       #ifdef _SVID_SOURCE
           printf("_SVID_SOURCE definiert\n");
       #endif

       #ifdef _DEFAULT_SOURCE
           printf("_DEFAULT_SOURCE definiert\n");
       #endif

       #ifdef _ATFILE_SOURCE
           printf("_ATFILE_SOURCE definiert\n");
       #endif

       #ifdef _GNU_SOURCE
           printf("_GNU_SOURCE definiert\n");
       #endif

       #ifdef _REENTRANT
           printf("_REENTRANT definiert\n");
       #endif

       #ifdef _THREAD_SAFE
           printf("_THREAD_SAFE definiert\n");
       #endif

       #ifdef _FORTIFY_SOURCE
           printf("_FORTIFY_SOURCE definiert\n");
       #endif

           exit(EXIT_SUCCESS);
       }

SIEHE AUCH

       libc(7), standards(7)

       Der Abschnitt »Feature Test Macros« unter info libc.

       /usr/include/features.h

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  4.04  des  Projekts  Linux-man-pages. Eine
       Beschreibung des Projekts, Informationen, wie Fehler  gemeldet  werden  können  sowie  die
       aktuelle Version dieser Seite finden sich unter http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die   deutsche   Übersetzung  dieser  Handbuchseite  wurde  von  Martin  Eberhard  Schauer
       <Martin.E.Schauer@gmx.de> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version   3  oder  neuer  bezüglich  der  Copyright-Bedingungen.  Es  wird  KEINE  HAFTUNG
       übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an <debian-l10n-german@lists.debian.org>.