stdalign.h

(重定向自Cstdalign

stdalign.h是C语言标准2011版新增加的C標準函数庫头文件,为向后兼容目的定义了4个宏:

  • alignas 被扩展为_Alignas,_Alignas为C11的关键字。
  • alignof 被扩展为_Alignof,_Alignof为C11的关键字。
  • __alignas_is_defined 被扩展为1
  • __alignof_is_defined 被扩展为1

在C++11中,alignas与alignof是关键字。alignas用于变量定义、数据成员声明、class\struct\union的声明与定义。alignas不可用于基本类型的别名、数组类型等。alignas只能用于更严格(更大对齐值)。alignas的参数可以为数、类型。

alignof的参数为类型。

例子

#include <stdalign.h>
char alignas(double) buf[30];
char alignas(32) foo[7];

typedef struct { int a; double b; } S;
// alignof(S) == 8 为真

参考文献

  • C语言标准2011版:ISO/IEC 9899:2011第7.15节“Alignment <stdalign.h>”。