结构的填充

D

devendra_devgupta

Guest
您好朋友,
我已经通过各种网站和理解什么是结构的填充,但是没有身体告诉在微控制器中加以研究。我的问题是:

1)为什么只有结构填充
2)什么是8位,16位差异相同结构衬垫和32位微控制器

 
结构填充normaly与位域和allignment工会。
例如,如果你有一个3未用的输出串行到并行的8位继电器驱动器。你可以使用下面的数据结构。代码:/*---继电器结构---*/结构RELAYBITS



未签名的卡侬:1; / * SEL_BAL继电器* /

未签名的美国无线电:1; / * SEL_UNBAL继电器* /

未签名的地球:1; / * EARTHSEL继电器* /

未签名的理由:1; / * GND_RLY继电器* /

未使用的符号:3 / *对齐位* /

符号静音:1; / *静音继电器* /

);/*---接力位工会---*/typedef联盟



结构RELAYBITS位;

uint8_t数据;

)继电器;挥发性继电器RELAYbits;
 
另一种结构形式调整填充数据
, 甚至在内存中的边界。摩托罗拉68000处理器
, 最快的方法崩溃一个程序访问两个或四个字节变量
, 始于一个奇怪的地址。因此
, 编译器会自动调整为您的数据。

 
三江源版本很多
, 我亲爱的朋友们
在我看来,例如在下面的32位控制器的结构将被填充这样
结构

字符1;
廉政b;
短整型荤;
字符Ḏ;
);<img src="http://images.elektroda.net/93_1206507857.jpg" border="0" alt="Structure padding" title="结构填充"/>我的问题是

1)会发生什么情况
, 如果这个结构是在8位和16位控制器的定义

2)如何帮助填充高效编程的编译器
, 即使需要更多的空间。

3)最后
, 为什么只有结构的填充。为什么不正常的变量

 
我不认为你给的例子
, 你将存储建议。
如果这是一个联盟,是的,那么所有的变量占据相同的空间和要求相同的字节数在这种情况下4。

我相信大部分的编译器将包这个结构,8个字节,除非你的这个结构是alligned杂注要求。为了调整结构的每一个成员的最大变数将是宝贵的存储空间浪费。

 
抱歉
, 我这里显示是错误的是正确的
结构

字符1;
廉政b;
短整型荤;
字符Ḏ;
);<img src="http://images.elektroda.net/61_1206589214.jpg" border="0" alt="Structure padding" title="结构填充"/>这些都是不同的充每个地点32位宽
但我的问题是
, 因为它是!!!!!!

 
嘿朋友请回复。如果你不知道答案
, 尝试找出请你的朋友/论坛。这不仅提高了我们的知识
, 观念也。

 
不难计算出:

代码:

/ /使用DevC :

#包括<iostream.h>

#包括<conio.h>廉政主体(廉政argc,烧焦* argv [])



结构



字符1;

廉政b;

短整型荤;

字符Ḏ;

)富;printf(“%磷%磷%磷%p \ N”型,与foo.a,&foo.b,&foo.c的,&foo.d);

参考getch();

返回0;

)输出为:0022FF60 0022FF64 0022FF68 0022FF6A
 

Welcome to EDABoard.com

Sponsor

Back
Top