Konformität
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.
Einige Standardbibliotheksheader sind teilweise freistehend.
|
(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
|