Implementierungsabhängige ANSI-Standards

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu C++-Sprachreferenz - Index


Bestimmte Aspekte des ANSI-C-Standards sind von ANSI nicht genau definiert. Diese Aspekte können von Benutzern, die einen C-Compiler implementieren, nach eigenen Wünschen definiert werden. Im Folgenden wird beschrieben, wie diese implementierungsabhängigen Standards von Embarcadero definiert wurden. Die Abschnittsnummerierungen beziehen sich auf den C ANSI/ISO-Standard vom Februar 1990. Beachten Sie, dass C und C++ Unterschiede aufweisen; dieses Thema enthält nur Informationen zu C.

2.1.1.3 Kennzeichnen von Diagnosen

Wenn der Compiler mit der richtigen Zusammenstellung von Optionen ausgeführt wird, sind alle von ihm ausgegebenen Meldungen, die mit den Worten Fatal, Error oder Warning beginnen, Diagnosen im von ANSI spezifizierten Sinn. Im Folgenden sind die Optionen aufgeführt, die angegeben sein müssen, damit diese Interpretation zutrifft:

Option Aktion

-A

Nur ANSI-Schlüsselwörter aktivieren.

-C-

Verschachtelte Kommentare sind nicht zulässig.

-i32

Höchstens 32 signifikante Zeichen in Bezeichnern.

-p-

C-Aufrufkonventionen verwenden.

-w-

Alle Warnungen deaktivieren.

-wbei

Warnung für nicht geeignete Initialisierer aktivieren.

-wbig

Warnung bei zu großen Konstanten aktivieren.

-wcpt

Warnung für nicht portierbare Zeigervergleiche aktivieren.

-wdcl

Warnung für Deklarationen ohne Typ oder Speicherklasse aktivieren.

-wdup

Warnung für doppelte, aber nicht identische Makrodefinitionen aktivieren.

-wext

Warnung für Variablen, die sowohl extern als auch statisch deklariert sind, aktivieren.

-wfdt

Warnung für Funktionsdefinitionen mit Typdefinition aktivieren.

-wrpt

Warnung für nicht portierbare Zeigerkonvertierung aktivieren.

-wstu

Warnung für nicht definierte Strukturen aktivieren.

-wsus

Warnung für fragwürdige Zeigerkonvertierung aktivieren.

-wucp

Warnung für Zeiger aktivieren, die gleichzeitig auf vorzeichenlose und vorzeichenbehaftete Zeichen zeigen.

-wvrt

Warnung für void-Funktionen aktivieren, die einen Wert zurückgeben.


Alle anderen Optionen, die hier nicht gesondert erwähnt wurden, können beliebig eingestellt werden.


2.1.2.2.1 Die Semantik der an main übergebenen Argumente

Der Wert von argv[0] zeigt bei Programmen, die von der Befehlszeile aus aufgerufen werden, auf den Programmnamen. Die restlichen argv-Strings zeigen auf die einzelnen Komponenten der in der DOS-Befehlszeile eingegebenen Argumente. Whitespace-Zeichen zur Trennung von Argumenten werden entfernt, und alle Sequenzen aus zusammenhängenden nicht Whitespace-Zeichen werden als einzelnes Argument behandelt. Strings in Anführungszeichen werden korrekt verarbeitet (d.h. als einzelner String mit Leerzeichen).

2.1.2.3 Was zeichnet ein interaktives Gerät aus?

Alle Geräte, die wie die Konsole aussehen, sind interaktiv.

2.2.1 Die Dateizuordnungssequenz des Ausführungszeichensatzes

Die Dateizuordnungssequenz für den Ausführungszeichensatz verwendet den Wert des Zeichens in ASCII.

2.2.1 Member des Zeichensatzes des Quelltextes und der Ausführung

Als Quell- und Ausführungszeichensatz dient der erweiterte ASCII-Satz, der von IBM PCs unterstützt wird. Alle Zeichen außer Strg+Z können in String-Literalen, Zeichenkonstanten oder Kommentaren verwendet werden.

2.2.1.2 Multibyte-Zeichen

Multibyte-Zeichen werden in Appmethod C++ unterstützt.

2.2.2 Druckrichtung

Der Druckvorgang wird von links nach rechts, d.h. in der auf dem PC üblichen Richtung, ausgeführt.

2.2.4.2 Die Anzahl der Bits pro Zeichen im Ausführungszeichensatz

Der Ausführungszeichensatz enthält 8 Bit pro Zeichen.

3.1.2 Die Anzahl der signifikanten Anfangszeichen in Bezeichnern

Die ersten 32 Zeichen sind signifikant. Diese Anzahl kann jedoch über die Option (-i) in der Befehlszeile geändert werden. Interne und externe Bezeichner verwenden die gleiche Anzahl signifikanter Zeichen. (In C++-Bezeichnern ist die Anzahl der signifikanten Zeichen unbeschränkt.)

3.1.2 Die Unterscheidung von Groß- und Kleinschreibung in externen Bezeichnern

Der Compiler zwingt den Linker normalerweise zwischen Groß- und Kleinschreibung zu unterscheiden. Mit der Option (-lc-) in der Befehlszeile kann diese Unterscheidung unterdrückt werden.

3.1.2.5 Die Darstellung und Wertebereich verschiedener Integer-Typen

Typ Mindestwert Maximalwert
Kennzeichnende Diagnosen in C++

signed char

-128

127

unsigned char

0

255

signed short

-32.768

32.767

unsigned short

0

65.535

signed int

-2.147.483.648

2.147.483.647

unsigned int

0

4.294.967.295

signed long

-2.147.483.648

2.147.483.647

unsigned long

0

4.294.967.295


Alle char-Typen verwenden ein 8-Bit großes Byte zum Speichern. Alle short-Typen verwenden 2 Bytes. Alle int-Typen verwenden 4 Bytes. Alle long-Typen verwenden 4 Bytes. Falls eine Ausrichtung erforderlich ist (-a), werden alle Integer-Objekte vom Typ nonchar an geraden Byte-Grenzen ausgerichtet. Wenn die Ausrichtung -a4 erforderlich ist, ist das Ergebnis eine 4-Byte-Ausrichtung. Zeichentypen werden niemals ausgerichtet.

3.1.2.5 Die Darstellung und der Wertebereich der verschiedenen Gleitkommazahl-Typen

Alle Appmethod C++-Gleitkomma-Typen richten sich nach den vom IEEE definierten Gleitkommaformaten, die von Intel 8086 verwendet werden. Der Typ float verwendet das vom IEEE spezifizierte 32-Bit-Format mit Nachkommastellen. Der Typ double verwendet das 64-Bit-Format mit Nachkommastellen nach IEEE. Der Typ long double verwendet das erweiterte 80-Bit-Format mit Nachkommastellen nach IEEE.

3.1.3.4 Die Zuordnung von Quell- und Ausführungszeichensätzen

Die Zeichen in String-Literalen oder Zeichenkonstanten werden im ausführenden Programm nicht verändert. Quell- und Ausführungszeichensatz sind gleich.

3.1.3.4 Der Wert einer ganzzahligen Zeichenkonstante mit einer Zeichen- oder Escape-Sequenz, die im grundlegenden Ausführungszeichensatz (oder im Falle einer Wide-Zeichen-Konstante im erweiterten Zeichensatz) nicht enthalten ist

Wide-Zeichen werden unterstützt.

3.1.3.4 Die aktuelle Gebietseinstellung, mit der Multibyte-Zeichen für eine Wide-Zeichen-Konstante in die entsprechenden Wide-Zeichen konvertiert werden

Wide-Zeichen-Konstanten werden erkannt.

3.1.3.4 Der Wert einer Integer-Konstante, die mehrere Zeichen enthält oder einer Wide-Zeichen-Konstante, die mehrere Multibyte-Zeichen enthält

Zeichenkonstanten können ein oder zwei Zeichen enthalten. Bei zwei Zeichen nimmt das erste das höherwertige Byte und das zweite das niederwertige Byte ein.

3.2.1.2 Das Ergebnis der Konvertierung einer Ganzzahl in eine vorzeichenbehaftete Ganzzahl mit weniger Stellen, oder das Ergebnis der Konvertierung einer Ganzzahl ohne Vorzeichen in eine Ganzzahl mit Vorzeichen gleicher Länge, wenn der Wert nicht dargestellt werden kann

Im Zuge dieser Konvertierungen werden die höherwertigen Bits einfach abgeschnitten. Vorzeichenbehaftete Ganzzahlen werden als Werte im 2x-Komplement gespeichert. Das Ergebnis wird somit als ein solcher Wert interpretiert. Wenn das höherwertige Bit der kleineren Ganzzahl nicht Null ist, wird der Wert als negativer Wert interpretiert, andernfalls ist er positiv.

3.2.1.3 Die Richtung beim Abschneiden, wenn eine Integralzahl in eine Gleitkommazahl konvertiert wird, die den ursprünglichen Wert nicht genau wiedergeben kann

Der Wert der Ganzzahl wird auf den nächsten repräsentierbaren Wert gerundet. Der Wert des Typs long (2^31 -1) wird beispielsweise in den Wert des Typs float 2^31 konvertiert. Die Bindungen werden gemäß der vom IEEE festgelegten Standard-Arithmetik aufgelöst.

3.2.1.4 Die Richtung beim Abschneiden oder Runden, wenn eine Gleitkommazahl in eine Gleitkommazahl mit weniger Stellen konvertiert wird

Der Wert wird auf den nächstliegenden repräsentierbaren Wert gerundet. Bindungen werden gemäß der vom IEEE festgelegten Standard-Arithmetik aufgelöst.

3.3 Die Ergebnisse bitweiser Operationen mit Ganzzahlen mit Vorzeichen

Die bitweisen Operatoren wirken sich auf vorzeichenbehaftete ganzzahlige Werte so aus, als würde es sich um die entsprechenden vorzeichenlosen Typen handeln. Das Vorzeichenbit wird als normales Datenbit verarbeitet. Das Ergebnis wird dann als vorzeichenbehaftete Ganzzahl im 2x-Komplement interpretiert.

3.3.2.3 Was passiert, wenn auf ein Member eines Variantenobjekts mit einem Member eines anderen Typs zugegriffen wird?

Der Zugriff wird zugelassen, und der Member des anderen Typs greift auf die gespeicherten Bits zu. Sie müssen genau verstehen, wie die Bits von Gleitkommawerten verschlüsselt sind. Erst dann können Sie nachvollziehen, wie mit einem Member eines anderen Typs auf einen Gleitkomma-Member zugegriffen wird. Wenn der gespeicherte Member weniger Stellen besitzt als der Member, mit dem auf den Wert zugegriffen wird, nehmen die überzähligen Bits ihren ursprünglichen Wert vor der Speicherung des Members vom Typ Short an.

3.3.3.4 Der Integer-Typ, der für die Aufnahme der maximalen Größe eines Arrays erforderlich ist

Für ein normales Array ist der Typ unsigned int vorgesehen und für sehr große Arrays der Typ signed long.

3.3.4 Das Ergebnis des Umwandelns eines Zeigers in eine Ganzzahl oder umgekehrt

Wenn Sie zwischen ganzen Zahlen und Zeigern derselben Größe konvertieren, werden keine Bits geändert. Wenn Sie von einem größeren Typ in einen kleineren Typ konvertieren, werden die höherwertigen Bits abgeschnitten. Bei der Konvertierung einer kürzeren Ganzzahl in einen längeren Zeigertyp, wird die Ganzzahl zunächst auf einen Wert des Typs Integer erweitert, dessen Länge der des Zeigers entspricht. Vorzeichenbehaftete Ganzzahlen werden also vorzeichenerweitert, um die zusätzlichen Bytes aufzufüllen. In ähnlicher Weise werden kleinere Zeigertypen, die in größere Integer-Typen konvertiert werden sollen, zunächst auf einen Zeigertyp erweitert, der so lang ist wie der Integer-Typ.

3.3.5 Das Vorzeichen des Rests bei der Division von Ganzzahlen

Das Vorzeichen für den Rest ist negativ, sobald einer der Operanden negativ ist. Wenn keiner oder beide Operanden negativ sind, wird der Rest positiv.

3.3.6 Der Integer-Typ, der zur Aufnahme der Differenz zwischen zwei Zeigern auf Elemente desselben Arrays, ptrdiff_t, erforderlich ist

Der Typ ist ein vorzeichenbehaftetes int.

3.3.7 Das Ergebnis der Rechtsverschiebung eines Integrals mit negativem Vorzeichen

Ein Wert mit negativem Vorzeichen wird bei der Verschiebung nach rechts vorzeichenerweitert.

3.5.1 Das Ausmaß, in dem Objekte mit dem Speicherklassenspezifizierer register in Registern abgelegt werden können

Objekte, die mit beliebigen ein-, zwei-, oder vier-Byte-Integer- oder Zeigertypen von zwei Bytes deklariert werden, können in Registern abgelegt werden. Mindestens zwei und höchstens sieben Register stehen zur Verfügung. Die Anzahl der tatsächlich verwendeten Register, hängt davon ab, welche Register für die temporären Werte in der Funktion benötigt werden.

3.5.2.1 Die Behandlung eines einfachen Bitfelds als Bitfeld des Typs signed int oder des Typs unsigned int

Einfache Bitfelder des Typs int werden wie Bitfelder des Typs signed int behandelt.

3.5.2.1 Die Reihenfolge der Zuordnung von Bitfeldern innerhalb von Ganzzahlen

Die Zuordnung der Bitfelder beginnt beim niederwertigen Bit und wird in Richtung der höherwertigen Bits fortgeführt.

3.5.2.1 Das Auffüllen und Ausrichten von Strukturelementen

In der Voreinstellung ist das Auffüllen von Strukturen nicht vorgesehen. Wenn Sie die wortweise Ausrichtung (-a) verwenden, werden Strukturen auf gerade Größe aufgefüllt und alle Member, die nicht vom Typ Zeichen oder Zeichen-Array sind, werden an einem geraden Mehrfachen des Offsets ausgerichtet.

3.5.2.1 Die Überschreitung der Grenzen der Speichereinheit durch ein Bitfeld

Ein Bitfeld kann, abhängig von der Gesamtausrichtung und der Typausrichtung, die Grenzen einer Speichereinheit überschreiten.

3.5.2.2 Der Integer-Typ, der die Werte eines Aufzählungstyps repräsentierten soll

Alle Aufzählungen werden als vollständige ints gespeichert. Alle Aufzählungen werden als long oder unsigned long gespeichert, wenn die Werte nicht in ein int passen. Dieses Verhalten ist durch die Compiler-Option -b voreingestellt. Die Option -b- legt fest, dass Aufzählungen in den kleinstmöglichen Integer-Typ, die die Werte noch repräsentieren können, gespeichert werden sollen. Dazu gehören alle integralen Typen, wie z.B. signed char, unsigned char, signed short, unsigned short, signed int, unsigned int, signed long und unsigned long.

Die Option -b- muss aus Kompatibilitätsgründen für C++ festgelegt werden, da es für C++ nicht korrekt ist, alle Aufzählungen als ints zu speichern.

3.5.3 Die Zugriffe auf Objekte, deren Typ als volatile qualifiziert ist

Alle Verweise auf ein volatile Objekt greifen auf das Objekt zu. Ob durch den Zugriff auf benachbarte Speicherstellen ebenfalls auf ein Objekt zugegriffen werden kann, hängt vom Aufbau des Speichers in der Hardware ab. Bei Speichern von speziellen Geräten, wie z.B. dem Speicher von Videoanzeigen, hängt es vom Aufbau des Geräts ab. Bei normalen PC-Speichern werden volatile Objekte nur für Speicher verwendet, die von asynchronen Interrupts adressiert werden. Der Zugriff auf benachbarte Objekte hat daher keine Auswirkung.

3.5.4 Die maximale Anzahl der Deklaratoren, die die arithmetische, Struktur- oder Union-Typen ändern können

Die Anzahl der Deklaratoren ist nicht eingeschränkt. Relativ viele Deklaratoren dürfen verwendet werden, die Anzahl wird aber verringert, wenn sie tief in einer Gruppe von Blöcken in einer Funktion verschachtelt sind. Die zulässige Anzahl auf Dateiebene beträgt mindestens 50.

3.6.4.2 Die maximale Anzahl von case-Werten in einer switch-Anweisung

Die Anzahl der cases pro switch ist nicht genau beschränkt. Bei ausreichendem Arbeitsspeicher wird der Compiler die case-Informationen akzeptieren.

3.8.1 Entspricht der Wert einer aus einem Zeichen bestehenden Zeichenkonstante in einem Konstantenausdruck, der die bedingte Inklusion steuert, dem Wert derselben Zeichenkonstanten im Ausführungszeichensatz? Kann solch eine Zeichenkonstante einen negativen Wert annehmen

Alle Konstanten, auch Konstanten in Bedingungsanweisungen, verwenden denselben Zeichensatz (Ausführung). Zeichenkonstanten aus einem Zeichen sind negativ, wenn der Typ des Zeichens ein Vorzeichen hat (Vorgabe und -K nicht erforderlich).

3.8.2 Die Methode zum Feststellen der Position von einbeziehbaren Quelldateien

Wenn die Include-Dateinamen in Include-Verzeichnissen in der Befehlszeile in spitzen Klammern angegeben sind, werden die Dateien in allen Include-Verzeichnissen gesucht. Dabei wird die folgende Reihenfolge eingehalten:

  1. Zuerst in den in der Befehlszeile angegebenen Verzeichnissen.
  2. Dann in den in der Konfigurationsdatei der Befehlszeilenoberfläche des Compilers angegebenen Verzeichnissen. Zum Beispiel, in BCC32.CFG für BCC32.EXE.
  3. Wenn keine Include-Verzeichnisse angegeben sind, wird nur das aktuelle Verzeichnis nach den Dateien durchsucht.

3.8.2 Die Unterstützung von Namen in Anführungszeichen für einbeziehbare Quelldateien

Nach in Anführungszeichen gesetzten einbeziehbaren Dateinamen wird in der folgenden Reihenfolge gesucht:

  1. Im Verzeichnis, das die Datei mit der #include-Anweisung enthält.
  2. In den Verzeichnissen der Dateien, die die gesuchte Datei einbeziehen (#include).
  3. Im aktuellen Verzeichnis.
  4. Im Pfad, der mit der Compiler-Option /l angegeben wurde.
  5. In den Pfaden, die in der Umgebungsvariable INCLUDE angegeben wurden.

3.8.2 Die Zuordnung von Zeichenfolgen bei Quelldateinamen

Backslashes werden in Namen von Include-Dateien als eigene Zeichen und nicht als Escape-Zeichen behandelt. Unterschiede bei der Groß- und Kleinschreibung werden bei Buchstaben ignoriert.

3.8.8 Die Definitionen für nicht verfügbare _ _DATE_ _ und _ _TIME_ _

Datum und Uhrzeit sind immer verfügbar. Sie richten sich nach Datum und Uhrzeit des Betriebssystems.

4.1.1 Das Dezimaltrennzeichen

Als Dezimaltrennzeichen wird ein Punkt (.) verwendet.

4.1.5 Der Typ des sizeof-Operators, size_t

Der Typ size_t hat kein Vorzeichen.

4.1.5 Die Nullzeigerkonstante, auf die das Makro NULL erweitert wird

NULL wird zu einer Null des Typs int oder long erweitert. Beides sind 32-Bit-Zahlen mit Vorzeichen.

4.2 Von der Funktion Assert ausgegebene Diagnosemeldung und Abschlussverhalten

Die ausgegebene Diagnosemeldung lautet: "Assertion failed: Ausdruck, file Dateiname, line nn", wobei Ausdruck für den ausgeführten Ausdruck steht, der fehlgeschlagen ist, Dateiname für den Quelldateinamen und nn für die Nummer der Zeile, in der die Ausführung stattfand.

Abort wird sofort nach dem Anzeigen der Ausführungsmeldung aufgerufen.

4.3 Die implementierungsspezifischen Aspekte der Zeichenprüfung und Funktionen für die case-Zuordnung

Unter 4.3.1 angegeben.

4.3.1 Von den Funktionen isalnum, isalpha, iscntrl, islower, isprint und isupper geprüfte Zeichensätze

Die ersten 128 ASCII-Zeichen für die voreingestellte C-Gebietseinstellung. Ansonsten alle 256 Zeichen.

4.5.1 Von den mathematischen Funktionen bei Domänen-Fehlern zurückgegebene Funktionen

Ein IEEE-NAN (keine Zahl).

4.5.1 Setzen die mathematischen Funktionen bei Unterlauf-Fehlern den ganzzahligen Ausdruck errnoauf den Wert des Makros ERANGE

Nein, dies gilt nur für die anderen Fehler - Domäne, Singularität, Überlauf und vollständiger Verlust der Genauigkeit.

4.5.6.4 Tritt ein Domänen-Fehler auf oder wird eine Null zurückgegeben, wenn die Funktion fmod ein zweites Null-Argument aufweist?

Nein, die Funktion fmod(x,0) gibt 0 zurück.

4.7.1.1 Die Menge der Signale für die signal-Funktion

SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV und SIGTERM.

4.7.1.1 Die Semantik der einzelnen von der signal-Funktion erkannten Signale

Siehe die Erläuterungen unter signal (C RTL).

4.7.1.1 Die Standardverarbeitung sowie die Verarbeitung bei Programmstart der einzelnen von der Funktion signal erkannten Signale

Siehe die Erläuterungen unter signal (C RTL).

4.7.1.1 Die Blockierung des ausgeführten Signals, wenn die Entsprechung von signal(sig, SIG_DFL) nicht vor dem Aufruf der signal-Behandlungsroutine ausgeführt wird

Die Entsprechung von signal (C RTL)(sig, SIG_DFL) wird immer ausgeführt.

4.7.1.1 Wird die Standardverarbeitung zurückgesetzt, wenn das Signal SIGILL von einer für die signal-Funktion festgelegten Behandlungsroutine empfangen wird?

Nein, es wird nicht zurückgesetzt.

4.9.2 Muss an das Ende der letzten Zeile eines Text-Streams ein Zeilenvorschub gesetzt werden?

Nein, es ist kein Zeilenvorschub erforderlich.

4.9.2 Werden Leerzeichen, die direkt vor einem Zeilenvorschub eingegeben werden, beim Einlesen angezeigt?

Ja, sie werden angezeigt.

4.9.2 Wie viele Nullzeichen dürfen an die in einen binären Stream geschriebenen Daten angehängt werden?

Keine.

4.9.3 Wird der Indikator für die Dateiposition eines Streams im Append-Modus anfänglich an den Beginn oder das Ende einer Datei gesetzt?

Der Indikator der Dateiposition eines Streams im Append-Modus wird an den Anfang der Datei gesetzt. Vor jedem Schreibzugriff wird er an das Ende der Datei zurückgesetzt.

4.9.3 Wird bei einem Schreibzugriff auf einen Text-Stream die zugehörige Datei ab dieser Stelle abgeschnitten?

Ein Schreibzugriff von 0 Byte kann, muss die Datei aber nicht abschneiden. Dies hängt davon ab, wie die Datei zwischengespeichert ist. Am sichersten ist es, einen Schreibzugriff mit einer Länge von 0 Byte so zu klassifizieren, dass er ein unbestimmtes Verhalten hat.

4.9.3 Die Merkmale der Dateipufferung

Dateien können vollständig, zeilenweise oder gar nicht zwischengespeichert werden. Wenn eine Datei zwischengespeichert ist, wird beim Öffnen der Datei ein Standardpuffer von 512 Byte erstellt.

4.9.3 Gibt es Dateien mit einer Größe von Null?

Ja, die gibt es.

4.9.3 Kann dieselbe Datei mehrere Male geöffnet werden?

Ja, das ist möglich.

4.9.4.1 Die Auswirkung der Funktion remove auf eine geöffnete Datei

Es wird keine spezielle Prüfung auf eine bereits geöffnete Datei durchgeführt. Der Programmierer trägt die Verantwortung für diesen Schritt.

4.9.4.2 Die Auswirkung, wenn eine Datei mit dem neuen Namen vor der Umbenennung bereits vorhanden ist

Rename gibt -1 zurück und errno wird auf EEXIST gesetzt.

4.9.6.1 Die Ausgabe für %p-Konvertierung in fprintf

Es werden acht Hexadezimalzahlen (XXXXXXXX), mit Nullen aufgefüllt, in Großbuchstaben (wie %08lX) ausgegeben.

4.9.6.2 Die Eingabe für %p-Konvertierung in fscanf

Siehe 4.9.6.1.

4.9.6.2 Die Interpretation des Zeichens '-' (Bindestrich), das in der Scanliste für eine %[ -Konvertierung in fscanf weder das erste noch das letzte Zeichen ist

Siehe die Beschreibung von scanf.

4.9.9.1 Der Wert, auf den das Makro errno von den Funktionen fgetpos oder ftell bei einem Fehler gesetzt wird

EBADF Ungültige Dateinummer.

4.9.10.4 Die von perror erzeugten Meldungen

Meldungen, die in Win32 erzeugt werden

Arg list too big (Argumentliste zu lang)

Attempted to remove current directory (Versuch, das aktuelle Verzeichnis zu entfernen)

Bad address (Ungültige Adresse)

Bad file number (Ungültige Dateinummer)

Block device required (Blockgerät erforderlich)

Broken pipe (Fehlerhafte Pipe)

Cross-device link (Kreuzverbindung von Geräten)

Error 0 (Fehler 0)

Exec format error (Fehler beim Exec-Format)

Executable file in use (Ausführbare Datei wird verwendet)

File already exists (Datei bereits vorhanden)

File too large (Datei zu groß)

Illegal seek (Unzulässige Positionierung)

Inappropriate I/O control operation (Unzulässige E/A-Steueroperation)

Input/output error (Fehler bei Ein-/Ausgabe)

Interrupted function call (Unterbrochener Funktionsaufruf)

Invalid access code (Ungültiger Zugriffscode)

Invalid argument (Ungültiges Argument)

Invalid Data (Ungültige Daten)

Invalid environment (Ungültige Umgebung)

Invalid format (Ungültiges Format)

Invalid function number (Ungültige Funktionsnummer)

Invalid memory block address (Ungültige Speicherblockadresse)

Is a directory (Ist ein Verzeichnis)

Math argument (Mathematisches Argument)

Memory arena trashed (Speicherbereich nicht mehr vorhanden)

Name too long (Name zu lang)

No child processes (Keine untergeordneten Prozesse)

No more files (Keine weiteren Dateien)

No space left on device (Kein Speicherplatz auf dem Gerät verfügbar)

No such device (Gerät nicht vorhanden)

No such device or address (Gerät oder Adresse nicht vorhanden)

No such file or directory (Datei oder Verzeichnis nicht vorhanden)

No such process (Prozess nicht vorhanden)

Not a directory (Ist kein Verzeichnis)

Not enough memory (Speicher nicht ausreichend)

Not same device (Nicht dasselbe Gerät)

Operation not permitted (Operation nicht zulässig)

Path not found (Pfad nicht gefunden)

Permission denied (Zugriff verweigert)

Possible deadlock (Mögliches Deadlook)

Read-only file system (Schreibgeschütztes Dateisystem)

Resource busy (Ressource belegt)

Resource temporarily unavailable (Ressource vorübergehend nicht verfügbar)

Result too large (Ergebnis zu groß)

Too many links (Zu viele Verknüpfungen)

Too many open files (Zu viele geöffnete Dateien)


4.10.3 Das Verhalten von calloc, malloc oder realloc bei erforderlicher Größe 0

Die Funktionen calloc und malloc ignorieren die Anforderung und geben 0 zurück. realloc gibt den Block frei.

4.10.4.1 Das Verhalten der Funktion abort bezüglich geöffneter und temporärer Dateien

Die Dateipuffer werden nicht geleert und die Dateien nicht geschlossen.

4.10.4.3 Der Status, der von exit zurückgegeben wird, wenn der Wert des Arguments nicht Null, EXIT_SUCCESS oder EXIT_FAILURE ist

Kein besonderer. Der Status wird genauso zurückgegeben wie er übergeben wurde. Der Status wird durch ein signed char repräsentiert.

4.10.4.4 Das Einrichten der Umgebungsnamen und das Verfahren zum Ändern der von getenv verwendeten Umgebungsliste

Umgebungs-Strings sind im Betriebssystem mit dem Befehl SET definiert. Mit putenv können die Strings für die Dauer des aktuellen Programms geändert werden. Mit dem Befehl SET werden Umgebungs-Strings dauerhaft geändert.

4.10.4.5 Der Inhalt und Modus der Ausführung des Strings durch die Systemfunktion

Der String wird als Befehl des Betriebssystems interpretiert. Entweder wird COMSPEC verwendet, oder CMD.EXE ausgeführt. Der Argument-String wird als auszuführender Befehl übergeben. Alle im Betriebssystem integrierten Befehle, wie auch Stapeldateien und ausführbare Programme, können ausgeführt werden.

4.11.6.2 Der Inhalt der von strerror zurückgegebenen Fehlermeldungs-Strings

Siehe 4.9.10.4.

4.12.1 Die lokale Zeitzone und die Sommerzeit

Als lokale Uhrzeit und Datum des PC definiert.

4.12.2.1 Die Zeit der Uhr

Wird in Timer-Ticks wiedergegeben, beginnend mit dem Anfang der Programmausführung.

4.12.3.5 Die Formate für Datum und Uhrzeit