Namensräume
Varianten
Aktionen

Konformität

Von cppreference.com
< c‎ | Sprache

Konformität hat eine dreifache Definition

  • strikt konformes Programm - verwendet nur gut definierte Sprachkonstrukte, d. h. Konstrukte mit einem einzigen Verhalten. Es schließt nicht spezifiziertes, undefiniertes oder implementierungsdefiniertes Verhalten aus und überschreitet keine minimalen Implementierungsgrenzen.
  • konformes Programm - akzeptabel für eine konforme Implementierung.
  • konforme Implementierung -
    • Eine konforme gehostete Implementierung muss jedes strikt konforme Programm akzeptieren.
    • Eine konforme freistehende Implementierung muss jedes strikt konforme Programm akzeptieren, bei dem die Verwendung der in der Bibliothek-Klausel (Klausel 7) spezifizierten Funktionen auf die Inhalte der freistehenden Standardbibliotheksheader beschränkt ist (siehe unten).
    • Eine konforme Implementierung kann Erweiterungen haben (einschließlich zusätzlicher Bibliotheksfunktionen), vorausgesetzt, sie ändern nicht das Verhalten eines strikt konformen Programms.

Inhalt

[bearbeiten] Erklärung

Der Standard definiert keine minimale Implementierungsgrenze für Übersetzungseinheiten. Eine gehostete Umgebung hat ein Betriebssystem; eine freistehende Umgebung nicht. Ein Programm, das in einer gehosteten Umgebung läuft, kann alle in der Bibliothek-Klausel (Klausel 7) beschriebenen Funktionen verwenden; ein Programm, das in einer freistehenden Umgebung läuft, kann eine Teilmenge der von Klausel 4 geforderten Bibliotheksfunktionen verwenden.

[bearbeiten] Freistehende Standardbibliotheksheader

Alle Standardbibliotheksfunktionen in allen vollständig freistehenden Headern müssen von einer freistehenden Implementierung bereitgestellt werden.

Einige Standardbibliotheksheader sind bedingt freistehend.

  • Wenn die Implementierung die Makros __STDC_IEC_60559_BFP__ oder __STDC_IEC_60559_DFP__ vordefiniert, dann sind <math.h> und <fenv.h> vollständig freistehende Header. Das Verhalten von Funktionen in diesen Headern muss jedoch in einer freistehenden Umgebung nur dann gut definiert sein, wenn ein Programm den Zustand des Pragmas FENV_ACCESS nicht auf ON setzt.

Einige Standardbibliotheksheader sind teilweise freistehend.

  • In <stdlib.h> ist memalignment freistehend. Wenn außerdem __STDC_IEC_60559_BFP__ oder __STDC_IEC_60559_DFP__ vordefiniert sind, sind numerische Konvertierungsfunktionen (atoX, strtoX und strfromX) ebenfalls freistehend, während ihr Verhalten in einer freistehenden Umgebung nur dann gut definiert sein muss, wenn ein Programm den Zustand des Pragmas FENV_ACCESS nicht auf ON setzt. Keine anderen Komponenten in <stdlib.h> müssen 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 Standardbibliotheksheader
<float.h> Grenzen von Gleitkommatypen
<iso646.h> (seit C95) Alternative Operator-Schreibweisen
<limits.h> Bereiche von Ganzzahltypen
<stdalign.h> (seit C11) alignas und alignof Komfort-Makros
<stdarg.h> Variable Argumente
<stdbool.h> (seit C99) Makros für booleschen Typ
<stddef.h> Allgemeine Makrodefinitionen
<stdint.h> (seit C99) Ganzzahltypen mit fester Breite
<stdnoreturn.h> (seit C11) noreturn Komfort-Makro
<stdbit.h> (seit C23) Makros zur Arbeit mit Byte- und Bit-Darstellungen von Typen
Bedingt vollständig freistehende Standardbibliotheksheader
<fenv.h> (seit C23) Gleitkomma-Umgebung
<math.h> (seit C23) Allgemeine mathematische Funktionen
Teilweise freistehende Standardbibliotheksheader
<stdlib.h> (seit C23) Allgemeine Dienstprogramme: Speicherverwaltung, Programm-Dienstprogramme, String-Konvertierungen, Zufallszahlen, Algorithmen
<string.h> (seit C23) String-Bearbeitung

[bearbeiten] 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

[bearbeiten] Siehe auch

C++ Dokumentation für Freistehende und gehostete Implementierung