stdalign.h
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>”。