位操作之对齐特性:_Alignas()_Alignof()

编程入门 行业动态 更新时间:2024-10-11 23:15:27

位操作之对齐<a href=https://www.elefans.com/category/jswz/34/1769892.html style=特性:_Alignas()_Alignof()"/>

位操作之对齐特性:_Alignas()_Alignof()

位操作之对齐特性:_Alignas()&&_Alignof()

对齐指的是如何安排对象在内存中的位置。
_Alignof运算符给出了一个类型的对齐要求,在关键字_Aligof后面的圆括号中写上类型名即可:

size_t  d_align  = _Alignof(float);

假定d_align的值是4,意思float类型对象的对齐要求是4。较大的对齐值被称为stricterstronger,较小的值被称为weaker.
可以使用_Alignas说明符指定一个变量或类型的对齐值,但是不应该要求该值小于基本对齐值。

_Alignas(double) char c1;
_Alignas(8) char c2;
unsigned char _Alignas(long double) c_arr[sizeof(long double)];

注意:

不同版本的要求不同,有的要求_Alignas(type)说明符在类型说明符的后面,有的在前面,无论哪一种都能够识别。

示例程序:

/** @Author: wangyunlong* @Date:   2020-03-08 20:45:04* @Last Modified by:   Your name* @Last Modified time: 2020-03-08 21:11:28*/
#include <stdio.h>
#include<stdalign.h>
#include<stdlib.h>
int main(void)
{double dx;char ca;char cx;double dz;char cb;char _Alignas(double) cz;printf("char alignment:   %zd\n", _Alignof(char));printf("double alignment:  %zd\n", _Alignof(double));printf("&dx: %p\n",&dx);printf("&ca: %p\n",&ca);printf("&cx: %p\n",&cx);printf("&dz: %p\n",&dz);printf("&cb: %p\n",&cb);printf("&cz: %p\n",&cz);getchar();getchar();return 0;   
}

运行结果:

char alignment:   1
double alignment:  8
&dx: 0061FF18
&ca: 0061FF17
&cx: 0061FF16
&dz: 0061FF08
&cb: 0061FF07
&cz: 0061FF00

更多推荐

位操作之对齐特性:_Alignas()_Alignof()

本文发布于:2023-07-27 22:09:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1226453.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:特性   操作   _Alignof   _Alignas

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!