_Alignof 运算符

来自cppreference.com
< c‎ | language

查询其运算数类型的对齐要求。

目录

[编辑] 语法

_Alignof( type-name ) (C11 起)

此运算符通常通过便利宏 alignof 使用,该宏于头文件 stdalign.h 提供。

[编辑] 解释

返回 type-name指名的类型的对齐要求。若 type-name 为数组类型,则结果为数组元素的对齐要求。 type-name 不能为函数类型或不完整类型。

结果是 size_t 类型整数常量。

不求值运算数(故用作运算数的外部标识符不必有定义)。

typeVLA 类型,则不求值其大小表达式。

(C2x 起)

[编辑] 注意

一些 C 编译器允许把 _Alignof 用于表达式这种非标准扩展。

[编辑] 关键词

_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)

[编辑] 参阅

对齐要求不小于任何其他标量类型的类型
(typedef) [编辑]
_Alignas 指定符 设置对象的对齐要求(C11 起)
alignof 运算符C++ 文档