Namespaces
Variants

Conformance

From cppreference.net

Konformität hat eine dreifache Definition:

  • strictly conforming program - verwendet ausschließlich wohldefinierte Sprachkonstrukte, also Konstrukte mit einem einzigen Verhalten. Es schließt nicht spezifiziertes, undefiniertes oder implementierungsdefiniertes Verhalten aus und überschreitet keine minimalen Implementierungsgrenzen.
  • conforming program - für eine konforme Implementierung akzeptabel.
  • conforming implementation -
    • Eine konforme Hosted-Implementierung muss jedes streng konforme Programm akzeptieren.
    • Eine konforme Freestanding-Implementierung muss jedes streng konforme Programm akzeptieren, in dem die Verwendung der in der Bibliotheksklausel (Klausel 7) spezifizierten Merkmale auf die Inhalte der Freestanding-Standardbibliotheksheader beschränkt ist (siehe unten).
    • Eine konforme Implementierung kann Erweiterungen haben (einschließlich zusätzlicher Bibliotheksfunktionen), sofern sie das Verhalten eines streng konformen Programms nicht verändern.

Inhaltsverzeichnis

Erklärung

Der Standard definiert keine Mindestimplementierungsgrenze für Übersetzungseinheiten. Eine gehostete Umgebung verfügt über ein Betriebssystem; eine eigenständige Umgebung nicht. Ein Programm, das in einer gehosteten Umgebung läuft, kann alle im Bibliotheksabschnitt (Abschnitt 7) beschriebenen Funktionen verwenden; ein Programm, das in einer eigenständigen Umgebung läuft, kann eine Teilmenge der in Abschnitt 4 vorgeschriebenen Bibliotheksfunktionen verwenden.

Freistehende Standardbibliothek-Header

Alle Standardbibliothek-Funktionen in jedem vollständig freistehenden Header müssen von einer freistehenden Implementierung bereitgestellt werden.

Einige Standardbibliothek-Header sind bedingt freistehend.

  • Falls die Implementierung das Makro __STDC_IEC_60559_BFP__ oder __STDC_IEC_60559_DFP__ vordefiniert, dann sind <math.h> und <fenv.h> vollständig freistehende Header. Allerdings ist das Verhalten der Funktionen in diesen Headern nur dann in einer freistehenden Umgebung als wohldefiniert erforderlich, wenn ein Programm den Zustand der FENV_ACCESS -Pragma nicht auf ON setzt.

Einige Standardbibliothek-Header sind teilweise freistehend.

  • In <stdlib.h> ist memalignment freistehend. Zusätzlich, wenn __STDC_IEC_60559_BFP__ oder __STDC_IEC_60559_DFP__ vordefiniert sind, sind numerische Konvertierungsfunktionen ( ato X , strto X , und strfrom X ) ebenfalls freistehend, wobei ihr Verhalten nur dann in einer freistehenden Umgebung als wohldefiniert erforderlich ist, wenn ein Programm den Zustand der FENV_ACCESS -Pragma nicht auf ON setzt. Keine andere Komponente in <stdlib.h> muss von einer freistehenden Implementierung bereitgestellt werden.
  • In <string.h> müssen strdup , strndup , strcoll , strxfrm , strtok , und strerror nicht von einer freistehenden Implementierung bereitgestellt werden.
(seit C23)
Vollständig freistehende Standardbibliotheks-Header
<float.h> Grenzwerte der Gleitkommatypen
<iso646.h> (seit C95) Alternative Operatorschreibweisen
<limits.h> Wertebereiche der Ganzzahltypen
<stdalign.h> (seit C11) alignas und alignof Hilfsmakros
<stdarg.h> Variable Argumente
<stdbool.h> (seit C99) Makros für den booleschen Typ
<stddef.h> Allgemeine Makrodefinitionen
<stdint.h> (seit C99) Festbreiten-Ganzzahltypen
<stdnoreturn.h> (seit C11) noreturn Hilfsmakro
<stdbit.h> (seit C23) Makros zur Arbeit mit Byte- und Bitdarstellungen von Typen
Bedingt vollständig freistehende Standardbibliotheks-Header
<fenv.h> (seit C23) Gleitkomma-Umgebung
<math.h> (seit C23) Allgemeine mathematische Funktionen
Teilweise freistehende Standardbibliotheks-Header
<stdlib.h> (seit C23) Allgemeine Hilfsfunktionen: Speicherverwaltung , Programmhilfsmittel , Zeichenkettenumwandlungen , Zufallszahlen , Algorithmen
<string.h> (seit C23) Zeichenkettenbehandlung

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 4 Konformität (S: 9-10)
  • C17-Standard (ISO/IEC 9899:2018):
  • 4 Konformität (S: 4)
  • C11-Standard (ISO/IEC 9899:2011):
  • 4 Konformität (S: 8-9)
  • C99-Standard (ISO/IEC 9899:1999):
  • 4 Konformität (S: 7-8)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 1.7 Konformität

Siehe auch

C++ Dokumentation für Freestanding- und Hosted-Implementierung