首页 > 其他分享 >关于__attribute__使用

关于__attribute__使用

时间:2023-08-09 10:55:25浏览次数:29  
标签:__ 字节 attribute 编译器 关于 对齐 aligned

__attribute__配合使用参数介绍

1、aligned 

指定对象的对齐格式(以字节为单位),如:

struct S
 { 
    short b[3]; 
 } __attribute__ ((aligned (8)));  
 
 typedef int int32_t __attribute__ ((aligned (8)));

该声明将强制编译器确保(尽它所能)变量类型为struct S 或者int32_t 的变量在分配空间时采用8字节对齐方式。

如上所述,你可以手动指定对齐的格式,同样,你也可以使用默认的对齐方式。如果aligned 后面不紧跟一个指定的数字值,那么编译器将依据你的目标机器情况使用最大最有益的对齐方式。例如:

struct S 
{ 
   short b[3]; 
} __attribute__ ((aligned));

这里,如果sizeof(short )的大小为2byte,那么,S 的大小就为6 。取一个2 的次方值,使得该值大于等于6 ,则该值为8 ,所以编译器将设置S 类型的对齐方式为8 字节。

aligned 属性使被设置的对象占用更多的空间,相反的,使用packed 可以减小对象占用的空间。

需要注意的是,attribute 属性的效力与你的连接器也有关,如果你的连接器最大只支持16 字节对齐,那么你此时定义32 字节对齐也是无济于事的。

 

标签:__,字节,attribute,编译器,关于,对齐,aligned
From: https://www.cnblogs.com/liaigu/p/17352484.html

相关文章

  • python实现创建一个银行类,这个类实现了两个方法,第一个方法可以将用户信息写入到文件中
    classbank:defuser_info(self):a=input('请输入用户信息:')#不写encoding='utf-8'中文会乱码withopen('info.txt','w',encoding='utf-8')asf:f.write(a)defget_info(se......
  • 微信支付 V3 开发教程:初识 Senparc.Weixin.TenPayV3
    前言我在9年前发布了 Senparc.WeixinSDK 第一个开源版本,一直维护至今,如今Stras已经破7K,这一路上得到了.NET社区的积极响应和支持,也受到了非常多的宝贵建议,甚至代码的PR,目前累计的代码贡献者数量已经超过350人,在此表示衷心的感谢!我们也总在第一时间及时更新微......
  • 使用虚拟界面的方式,解决“xhost: unable to open display.
    背景最近在做一个项目,需求是将windows开发的ocx控件移植到linux。该需求的解决方案想的是:在linux中部署docker,在docker中安装wine容器,通过wine容器启动windwos程序。由于ocx控件依赖windows的控件,因此在使用wine命令时,需要传入$DISPLAY。一开始,在给linux安装好GUI界面后,按照上......
  • 小程序环形进度条(基于l-circularProgress)
    组件预览: 组件代码:<viewclass="progress-wrap"> <l-circularProgress:box-width="progressBoxWidth":box-height="progressBoxWidth":fontShow="false" progressColor="#fff5de":lineWidth="cir......
  • 美国空军未来利用AI控制无人僚机执行空战或对地作战任务成为可能——AI算法强化学习控
        来源:https://export.shobserver.com/baijiahao/html/640202.html https://baijiahao.baidu.com/s?id=1773463574030646069&wfr=spider&for=pc   作战无人机从有人远程控制进步到AI控制是一个大的跨域和发展,或许在战争中武器实现AI控制才是未来赛博战争该......
  • Codeforces Round 891 (Div. 3)
    A.ArrayColoring#include<bits/stdc++.h>usingnamespacestd;voidsolve(){intn;cin>>n;intsum=0;for(inti=1,x;i<=n;i++)cin>>x,sum+=x;if(sum%2==0)cout<<&quo......
  • JavaSE--多态在开发中的作用
    一、多态在开发中的作用  1、降低程序的耦合度,提高程序的扩展力  publicclassMaster(){    publicvoidfeed(Dogd){}    publicvoidfeed(Dogd){}  }  以上代码中:Master和Dog、Cat关系紧密,耦合度高,导致扩展力很差  publicclassMaster(){   ......
  • C++ vector 容器浅析
    C++vector容器浅析一、什么是vector?向量(Vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。二、容器特性1.顺序序列顺序容器中的元素按照严格的线性顺......
  • 格律诗乐器的生产流程和质量控制
    格律诗乐器的生产流程和质量控制格律诗乐器是一种传统而独特的中国乐器,它在音色、音质和外观上都有着高要求。为了制造出具有优秀品质的格律诗乐器,需要经过一系列严格的生产流程和质量控制步骤。一、原材料采购和质量评估格律诗乐器的制作过程始于原材料的采购。制作格律诗乐器......
  • @Constraint注解,做特殊的入参校验
    //@Constraint是Java中的注解之一,用于标记自定义的约束注解。约束注解通常用于数据验证,用来限制字段的取值或格式,确保数据的合法性。@Constraint(validatedBy=FlagValidate.class) 第一步:先建一个@interfaceFlag的注解校验类,注解相关的校验类为FlagValidate.Class:im......