C
C 语法

_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 ++文档