_Alignof (since C11) (deprecated in C23) , alignof (since C23) operator
Fragt die Ausrichtungsanforderung seines Operandentyps ab.
Inhaltsverzeichnis |
Syntax
_Alignof(
Typname
)
|
(seit C11) (veraltet in C23) | ||||||||
alignof(
Typname
)
|
(seit C23) | ||||||||
|
Dieser Operator wird typischerweise durch das praktische Makro alignof verwendet, das in der Header-Datei <stdalign.h> bereitgestellt wird. |
(bis C23) |
Erklärung
Gibt die Ausrichtungsanforderung des durch type-name benannten Typs zurück. Wenn type-name ein Array-Typ ist, ist das Ergebnis die Ausrichtungsanforderung des Array-Elementtyps. Der type-name darf kein Funktionstyp oder ein unvollständiger Typ sein.
Das Ergebnis ist eine ganzzahlige Konstante vom Typ size_t .
Der Operand wird nicht ausgewertet (daher müssen externe Bezeichner, die im Operanden verwendet werden, nicht definiert sein).
Wenn type-name ein VLA -Typ ist, wird seine Größenausdruck nicht ausgewertet.
Hinweise
Die Verwendung von
_Alignof
(bis C23)
alignof
(seit C23)
mit Ausdrücken ist von einigen C-Compilern als nicht standardkonforme Erweiterung erlaubt.
Schlüsselwörter
Beispiel
#include <stdalign.h> #include <stddef.h> #include <stdio.h> int main(void) { printf("Alignment of char = %zu\n", alignof(char)); printf("Alignment of max_align_t = %zu\n", alignof(max_align_t)); printf("alignof(float[10]) = %zu\n", alignof(float[10])); printf("alignof(struct{char c; int n;}) = %zu\n", alignof(struct {char c; int n;})); }
Mögliche Ausgabe:
Alignment of char = 1
Alignment of max_align_t = 16
alignof(float[10]) = 4
alignof(struct{char c; int n;}) = 4
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| DR 494 | C11 |
ob der Größenausdruck in einer VLA in
_Alignof
ausgewertet wird, war nicht spezifiziert
|
er wird nicht ausgewertet |
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 6.5.3.4 Die sizeof- und alignof-Operatoren (S: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- 6.5.3.4 Die sizeof- und _Alignof-Operatoren (S: 64-65)
- C11-Standard (ISO/IEC 9899:2011):
-
- 6.5.3.4 The sizeof and _Alignof operators (S: 90-91)
Siehe auch
|
(C11)
|
ein Typ mit Ausrichtungsanforderung so groß wie jeder andere skalare Typ
(typedef) |
| _Alignas (bis C23) alignas (seit C23) |
legt Ausrichtungsanforderungen eines Objekts fest
(Spezifizierer) |
|
C++-Dokumentation
für
alignof
Operator
|
|