当前位置: C语言 -- 标准库 -- <stdalign.h> -- alignof

alignof宏


概要:

该宏在<stdalign.h>头文件中定义,扩展为C语言关键词_Alignof

#define alignof _Alignof


关键词_Alignof的语法:

_Alignof(type-name);


描述:

_Alignof运算符是一元运算符,生成其操作数类型的对齐要求。该运算符的运算结果是一个size_t类型的整数常量;但该运算符不会计算操作数。当该运算符的操作数是数组类型时,运算结果是元素类型的对齐要求。

该运算符不能用于函数类型和不完整类型。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
/*宏alignof范例*/

#include <stdalign.h>
#include <stdio.h>

struct data {
    char str[6];
    int a;
    double b;
    double c;
    int d;
};

int main(void)
{
    printf("alignof(struct data): %zu\n", alignof(struct data));

    return 0;
}

输出:

alignof(struct data): 8

:当_Alignof运算符的操作数是结构类型时,ISO/IEC 9899:2018标准未作明确定义;但一些实现(例如:code::blocksideonePelles C。)的运算结果是结构成员的最严格对齐要求。


相关内容:
alignas 扩展为关键词_Alignas的宏。
__alignof_is_defined 判断是否定义alignof的宏。