_Alignof 运算符
查询其运算数类型的对齐要求。
语法
_Alignof( 类型名 )
|
(C11 起) | ||||||||
通常通过便利宏 alignof 使用此运算符,该宏于头文件 stdalign.h
提供。
解释
返回 类型名 所指名的类型的对齐要求。若 类型名 为数组类型,则结果为数组元素的对齐要求。 类型名 不能为函数类型或不完整类型。
结果是 size_t 类型整数常量。
不求值运算数(故用作运算数的外部标识符不必有定义)。
若 类型名 为 VLA 类型,则不求值其大小表达式。 |
(C2x 起) |
注解
一些 C 编译器允许把 _Alignof
用于表达式这种非标准扩展。
关键词
示例
运行此代码
#include <stdio.h> #include <stddef.h> #include <stdalign.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;})); }
可能的输出:
Alignment of char = 1 Alignment of max_align_t = 16 alignof(float[10]) = 4 alignof(struct{char c; int n;}) = 4
引用
- C11 standard (ISO/IEC 9899:2011):
- 6.5.3.4 The sizeof and _Alignof operators (p: 90-91)
参阅
(C11) |
对齐要求不小于任何其他标量类型的类型 (typedef) |
_Alignas 说明符 | 设置对象的对齐要求(C11 起) |