Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

C programming/stdalign.h

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

To query and specify the alignment of an object, include the header <stdalign.h> http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf C11: WG14/N1570 Committee Draft - April 12, 2011 ISO/IEC 9899:201x p.268, §7.15 Alignment <stdalign.h> ISO/IEC. Macro In <stdalign.h>, four macros are defined. alignas Expanded to _Alignas. alignof Expanded to _Alignof. _alignas_is_defined expands to integer constant 1. _alignas_is_defined Expanded to integer constant 1. _alignas_is_defined and _alignof_is_defined are suitable for use with #if preprocessing directives. alignas alignas() specifies the alignment in bytes for declaring variableshttp://www.open-std.org/ jtc1/sc22/wg14/www/docs/n1570.pdf C11: WG14/N1570 Committee Draft - April 12, 2011 ISO/IEC 9899:201x p.48, §6.2.8 '' Alignment of objects''' ISO/IEChttp://www.open-std.org/jtc1/sc 22/wg14/www/docs/n1570.pdf C11: WG14/N1570 Committee Draft - April 12, 2011 ISO/IEC 9899:201x p.127, §6.7.5 Alignment specifier ISO/IEC. Example #include <stdio.h> #include <stdalign.h> int main(void) { alignas(65536) int i; alignas(256) int j; int k; printf("Address of i is %p\n", &i); printf("Address of j is %p\n", &j); printf("Address of k is %p\n", &k); return 0; } Result Address of i is 0x7ffffffe0000 Address of j is 0x7ffffffeff00 Address of k is 0x7ffffffeffec alignof alignof() returns the alignment required by the specified type in size_t . Example #include <stdio.h> #include <stdalign.h> int main(void) { printf("Alignment requirement for char is %zu.\n", alignof(char)); printf("Alignment requirement for int is %zu.\n", alignof(int)); printf("Alignment requirement for float is %zu.\n", alignof(float)); printf("Alignment requirement for double is %zu.\n", alignof(double)); return 0; } Result Alignment requirement for char is 1. Alignment requirement for int is 4. Alignment requirement for float is 4. Alignment requirement for double is 8. History The alignas type specifier (keyword_Alignas), alignof operator (keyword_Alignof), header<stdalign.h>, added in ISO/IEC 9899:2011. Footnotes References ISO/IEC 9899:2018(en) Information technology - Programming languages - C(2018-07-05)