首页 > 编程知识 正文

关键字的作用,c static关键字的作用

时间:2023-05-06 07:29:51 阅读:174925 作者:3158

移植机器刀片的代码时,在结构中使用了过多的变量,为了节省ram空间,使用了__packed关键字进行了修饰。 举个例子:

struct{

哈拉; //1byte

intb; //4byte

charc[2]//2byte

双精度; //8byte

}Struct_A;

在计算机存储器中,结构变量的存储通常按字长对齐。 例如,如果在8位计算机上按字节对齐,则上述结构总共占用14 28=15字节。

在16位机器上,变量用2个字节对齐。 例如,名为a的成员是char类型,地址为0x80000000,只占一个字节,但下一个成员b不能使用地址0 x 800000001,必须使用0 x 800000002。 这将按字长对齐。 以上结构体占有的空间也就是2 4 2 8=16字节

同样,在32位计算机上,如果a位于0x80000000,则只能将b放入0x 800000004。 因为这里的字长是4字节。 以上结构占用空间4(4)8=20字节

也就是说总是有无用的字节。 这个目的很简单,因为在大多数计算机体系结构中,在内存操作时逐字访问效率最高,相当于交换空间和时间。 当然,某些计算机体系结构(如ARM )支持非对齐字传输。 这意味着变量不一定要根据字长对齐。 这可能会降低效率,但会节约存储空间。 将__packed关键字添加到mdk中可以生成没有对齐字的紧凑结构。 强制编译器以1字节对齐结构成员,但这些结构的占用空间仍然为15字节。 如果编译器不支持__packed关键字,则将其定义为空宏即可#define __packed

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。