_Alignof operator
_Alignof operator
查询操作数类型的对齐要求。
句法
_Alignof(类型名称) | | (自C11以来) |
---|
该运算符通常通过alignof
标题中提供的方便宏来使用stdalign.h
。
说明
返回由type-name命名的类型的对齐要求。如果type-name是数组类型,则结果是数组元素类型的对齐要求。类型名称不能是函数类型或不完整类型。
结果是一个整数常量类型size_t
。
操作数不计算(因此操作数中使用的外部标识符不必定义)。
笔记
一些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标准(ISO / IEC 9899:2011):
max_align_t(C11) | 对齐要求与其他标量类型一样大的类型(typedef) |
---|---|
_Alignas说明符 | 设置对象的对齐要求(自C11开始) |
| 用于alignof运算符的C ++文档