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

__alignas_is_defined宏


概要:

#define __alignas_is_defined 1


描述:

该宏会扩展为整数常量1,适合用于#if预处理指令。如果实现定义了该宏,则表示实现支持宏alignas;否则表示实现不支持宏alignas


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
/*宏__alignas_is_defined范例*/

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

#ifndef __alignas_is_defined
#define alignas _Alignas
#endif

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

int main(void)
{
    printf("sizeof(struct data): %zu\n", sizeof(struct data));
    printf("sizeof(char): %zu\n", sizeof(char));
    printf("sizeof(int): %zu\n", sizeof(int));
    printf("sizeof(double): %zu\n", sizeof(double));
    printf("offsetof(struct data, str): %zu\n", offsetof(struct data, str));
    printf("offsetof(struct data, a): %zu\n", offsetof(struct data, a));
    printf("offsetof(struct data, b): %zu\n", offsetof(struct data, b));
    printf("offsetof(struct data, c): %zu\n", offsetof(struct data, c));
    printf("offsetof(struct data, d): %zu\n", offsetof(struct data, d));

    return 0;
}

输出:

sizeof(struct data): 40

sizeof(char): 1

sizeof(int): 4

sizeof(double): 8

offsetof(struct data, str): 0

offsetof(struct data, a): 8

offsetof(struct data, b): 16

offsetof(struct data, c): 24

offsetof(struct data, d): 32


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