Die Gnu C Bibliothek: Selektion nach Merkmalen


  Share  
|

Im glibc gibt es einen Satz Selektion nach Merkmalenmakros, die verwendet werden, um vorzuwählen, dem Standards Sie glibc wünschen, um übereinzustimmen mit. Standards widersprechen manchmal und also erlaubt glibc Ihnen, genau vorzuwählen, das von den Standards (formal, de Jure und formloses, de Facto) mit denen einstellte, um einzuwilligen, völlig oder teilweise. Diese Makros werden technisch Eigenschaft Testmakros genannt.

Sie müssen diese Makros berücksichtigen, weil die Rückstellung, die von den definierten Makros eingestellt wird, nicht die ganze Funktionalität von glibc liefert. Einige Einheiten sind nicht mit dem vorgewählten Rückstellung Eigenschaft Satz vorhanden; wir dokumentieren die erforderlichen Eigenschaft Makros, um jede dieser Einheiten zu benutzen.

Die Eigenschaft Testmakros sind entworfen, um mit, welchen Standards (de Jure oder de Facto) und in einigen Fällen genau, denen zu spezifizieren Versionen jener Standards, glibc einwilligen sollten. Diese Befolgung schließt häufig das Definieren nicht von von Funktionen und von von Makros über ein, was hinaus durch einen Standard für Include-Dateien spezifiziert wird, die selbst durch Standard die definiert werden. Das bedeutet, daß eine Anwendung, die geschrieben wird, um sich mit einem Standard anzupassen, seine eigenen Funktionen und Makros definieren kann, ohne mit den Verlängerungen zu widersprechen, die nicht durch Standard die definiert werden.

Die Eigenschaft Testmakros garantieren nicht, daß Ihre Anwendung mit dem Satz der Standards völlig kompatibel ist, die durch den Satz von Makros spezifiziert werden, die Sie definieren. Die Einstellung der Eigenschaft Testmakros kann etwas Gebrauch von nonportable Verlängerungen finden, aber es zeigt nicht z.B. Gebrauch der Include-Dateien, die durch den Standard völlig nicht spezifiziert sind.

Die Makros werden in der System Include-Datei feature.h definiert, die Sie nicht direkt mit einschließen sollten. Stattdessen schließen alle weiteren Include-Dateien, die durch den Inhalt von feature.h beeinflußt werden konnten, es mit ein.

Der Rückstellung Satz von Eigenschaft Makros, wenn keine definiert werden, ist _ SVID_SOURCE=1, _bsd_source=1, _posix_source=1 und _ POSIX_C_SOURCE=199506L. Jede Wahl wird ausführlicher unten beschrieben, aber diese übersetzt im Wesentlichen in "Unterstützung die Fähigkeiten des 1995 POSIX Standards, alle Standardsystem V Eigenschaften und alle Bd Eigenschaften, die widersprechen nicht mit System V Eigenschaften." Dieser Rückstellung Satz Eigenschaft Makros genügt für die meisten Programme.

Wenn Sie GCC geben - ANSI Wahl, definiert sie automatisch das interne __ STRICT_ANSI __ Makro, das alle Rückstellung Eigenschaft Makros abstellt.

Mit Ausnahme von dem __ STRICT_ANSI __ Makro das speziell ist (und das nur durch den Compiler im Kontext von eingestellt werden sollte - ANSI Befehl Linie Wahl), sind diese Eigenschaft Makros kumulativ; Sie können jede mögliche Kombination von ihnen definieren. Die genaue Definition von _ BSD_SOURCE ändert abhängig von, welchem andere Eigenschaft Makros eingestellt werden (wie unten dokumentiert); der Rest sind lediglich kumulativ.

Einige der Eigenschaft Testmakros werden durch verschiedene Versionen von POSIX oder von anderen Standards definiert, sind einige in der Industrie allgemein, und andere werden ausschließlich auf glibc begrenzt.

_ POSIX_SOURCE Wenn dieses Makro definiert wird, werden alle Schnittstellen, die als Teil der ursprünglichen Spezifikation POSIX.1 definiert werden, zur Verfügung gestellt.
Dieses Makro wurde durch den ursprünglichen Standard POSIX.1-1990 definiert.
_ POSIX_C_SOURCE Dieses Makro ersetzt _ POSIX_SOURCE. Wenn es bis 1 eingestellt wird, ist es mit _ POSIX_SOURCE gleichwertig. Wenn es > = 2 ist, dann schließt es auch die C Schnittstellen ein, die von POSIX.2, einschließlich regelmäßige Ausdrücke definiert werden. Wenn es > = 199309L ist, dann schließt es auch die zusätzlichen C Schnittstellen ein, die in der Neuausgabe 1993 von POSIX, besonders einschließlich die weiche Realzeitfunktionalität definiert werden; wenn es > = 199506L (die Rückstellung) ist, schließt es auch die zusätzlichen C Schnittstellen ein, die in der Neuausgabe 1995 von POSIX, besonders einschließlich POSIX definiert werden, verlegt. Dieses Makro wurde durch Versionen von POSIX definiert, das nach 1990 freigegeben wurde, um Unterstützung für verschiedene Versionen der POSIX (und jetzt auch einzelner Unix) Standards zu unterscheiden. Es wird groß durch _ XOPEN_SOURCE ersetzt.
_ XOPEN_SOURCE Das _ XOPEN_SOURCE Makro wird durch den XSI Teil des einzelnen Unix Standards definiert und einen logischen Superset der Schnittstellen definiert, die durch _ POSIX_C_SOURCE eingeschlossen sind. Es wurde auch von XPG definiert. Wenn es an allen definiert wird, ist Unterseite-Niveau Übereinstimmung mit XPG4 (Unix95) enthalten. Wenn sie als 500 definiert wird, dann Unterseite-Niveau Übereinstimmung mit XPG5 (Unix98, SuS Version 2) ist enthalten. Wenn sie als 600 definiert wird, ist Unterseite-Niveau Übereinstimmung mit IEEE Std 1003.1-2003 (das kombinierte POSIX und SuS Dokument) enthalten.
_ ISOC99_SOURCE Dieses Eigenschaft Testmakro exportiert die Schnittstellen, die durch den neuen ISO/IEC C99 Standard definiert werden.
_ SVID_SOURCE Dieses Eigenschaft Testmakro stellt die Funktionalität zur Verfügung, die durch die System V Schnittstellendefinition (SVID) spezifiziert wird. Dieses deutet nicht an, daß glibc eine komplette Implementierung des SVID Standards liefert; es stellt bloß die SVID-spezifizierte Funktionalität heraus, die im glibc besteht.
_ BSD_SOURCE Bd Eigenschaften können mit anderen Eigenschaften widersprechen, und die Konflikte werden immer zugunsten System Vor des Standard-gefälligen Verhaltens behoben, wenn irgendein POSIX, X/Open oder System V Eigenschaft Makro definiert wird oder so—das einzige Eigenschaft Makro andeuteten, das erlaubt, daß Bd Verhalten ist _ ISOC99_SOURCE erklärt wird. (die genaue Definition dieses Eigenschaft Testmakros hat von Zeit zu Zeit geändert und kann wieder ändern, da sie nicht durch irgendwie Standard. spezifiziert wird)
_ GNU_SOURCE _ schaltet GNU_SOURCE alles möglich ein und bevorzugt System V Schnittstellen zu den Bd Schnittstellen in den Fällen vom Konflikt. Es addiert auch irgendeinen GNU- und Linux-spezifische Schnittstellen, wie Akte mietet.


Wenn der Standardsatz von Eigenschaft Testmakros nicht genügt, sind die am allgemeinsten nützlichen zu definieren Eigenschaft Makros _ GNU_SOURCE (Umdrehung alles auf—der einfachsten Lösung), _ XOPEN_SOURCE=600 (die meisten Sachen sind Sie wahrscheinlich, sich ungefähr zu interessieren, eine Teilmenge _ GNU_SOURCE) oder _ ISOC99_SOURCE (Gebraucheigenschaften vom neuesten C Standard, von einer Teilmenge _ XOPEN_SOURCE=600).

dieses ist ein Artikel, der von Humberto Mitchson hinzugefügt wird


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions