c语言shengchen图像,430编程C语言常识(IAR)(二)结构体与联合体

回复: 107

e5a73b6a7586c690ae7a720f72a4e733.png

ccfb3c64a5000ccc1971125e1fdae7b2.png

20f7beba86b4a360a2108c8a34a4ebf3.png

430编程C语言常识(IAR)(二)结构体与联合体

0615584fff45cecc7cd30cd948471bbc.gif

eb7fd645cf2c7b6925f0d256219e974a.png

(288035412)

出0入0汤圆

电梯直达

ac34f29e61779188a50d361fdeae2c1f.png

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-7 18:36:29

|

只看该作者

8d1228179cec554492e4b5a60a447513.gif

|倒序浏览

|阅读模式

本帖最后由 lcofjp 于 2012-4-8 10:17 编辑

结构体与联合体是C语言的常见数据类型,可对C的基本数据类型进行组合使之能表示复杂的数据结构,意义深远,是优异代码的必备工具。

一.        struct与 union的基本用法,在语法上union与struct相同,因此只以struct为例

1.1        基本用法:

struct AA{ int a; int b;}; //结构体的声明和定义

struct AA s1; //变量的声明和定义

s1.a=3; //变量的使用:复制代码1.2        在声明结构体的同时定义变量:

struct AA{int a; int b}s2={1, 2}; //此处AA为可选项,初始化部分为可选

s2.a=5;                 //变量的使用复制代码1.3        使用 typedef 来简化struct的类型说明:

typedef struct AA{int a; int b;}SAA;

SAA s3, s4;         //变量的声明和定义

s3.a=8; //变量的使用复制代码1.4 使用时尤其注意后面的分号,必不可少;

二.        struct 与 union的区别

2.1 struct中的成员是按顺序依次排列,互相独立,在排列时引入了对齐问题(2.2);而union中的成员共用一块内存,起始地址都是相同的,即union中的成员是对同一地址的多个引用、对同一地址的多种表达方法。

2.2 struct的对齐问题

对齐问题即struct中每个成员起始地址的分配。为了可以快速访问到每个成员,(以EW430为例)编译器根据成员的类型放到合适的地址上,默认为2字节对齐。如:

Struct AA{char c; int d;}aa;

假设aa被分配在地址N上,并且N为偶数,则aa.c的地址为N,aa.d的地址为N+2,而N+1地址未使用被浪费了。

对齐字节大小的指定:通过#pragma pack(n)来指定对齐字节的大小,n为某些常量(EW430中可取1,2,4,8,16),指定以n字节对齐。通常使用编译器默认的对齐大小最为适宜。如果指定对齐大小为1字节对齐,以上面的结构体变量aa为例,aa.c地址为N,aa.d地址为N+1,是个奇数地址,因为430在奇数地址只能读取一个字节,因此要访问d成员需要读取两次才能完成,后果是代码变长、速度变慢。

三.        匿名结构体与联合体

匿名结构体和联合体,即没有名字的结构体或者联合体,这种结构体(或联合体)无法通过.与->操作符引用(因为它所属的结构体或联合体没有名字,无法应用),而像暴露在外面一样,与外层作用域相同,可直接使用。

3.1 C标准中提及的匿名结构体和联合体(草稿原文引用)(C标准中提及的匿名结构(联合)体应该只适用于有名结构体(联合)中的匿名结构(联合)体成员)

struct v{

union{ //匿名联合体

struct {int i, j;}; //匿名结构体

struct {long k, l;}w;

};

int m;

}v1;

v1.i=2; //合法,匿名结构体的成员被直接使用

v1.k=3;//非法,有名字的结构体需要引用他的名字,如下

v1.w.k=5; //合法复制代码3.2 IAR中的匿名结构体和联合体

IAR中的匿名结构体和联合体可以具有全局作用域,因此结构体或联合体中的成员可以作为全局变量使用,但却兼具结构体或者联合体的属性。

(1)        IO430.h系列头文件的寄存器声明方式:

如:

__no_init volatile union

{

unsigned short SFRIE1;   /* Interrupt Enable 1 */

struct

{

unsigned short WDTIE           : 1; /* WDT Interrupt Enable */

unsigned short OFIE            : 1; /* Osc Fault Enable */

unsigned short                : 1;

unsigned short VMAIE           : 1; /* Vacant Memory Interrupt Enable */

unsigned short NMIIE           : 1; /* NMI Interrupt Enable */

unsigned short ACCVIE          : 1; /* Flash Access Violation Interrupt Enable */

unsigned short JMBINIE         : 1; /* JTAG Mail Box input Interrupt Enable */

unsigned short JMBOUTIE        : 1; /* JTAG Mail Box output Interrupt Enable */

}SFRIE1_bit;

} @0x0100;复制代码说明:[1].  SFRIE1和SFRIE1_bit具有全局变量的性质,可以直接被引用。

[2].        SFRIE1和SFRIE1_bit在同一联合体中,根据联合体的性质,他们共享同一地址,即对同一寄存器不同访问方式,SFRIE1对整个寄存器操作,SFRIE1_bit可对某位操作,如:

SFRIE1 |= 0x0001;和SFRIE1_bit.WDTIE = 1;具有相同效果。

[3].        冒号(:)与整数称之为位域,使用位域表达的变量使用同一数据中的不同位,并按顺序排列。整数表示这个变量占用多少位。没有名字的位域不能被引用到,一般用来保留未使用到的位(占位作用)。

(2)  在应用程序中也可以使用此特性来实现一些功能。

记得某位网友曾提出过这样的问题,要高效的使用一个整数的高8位和低8位,则可以用如下代码解决:

union {

unsigned int num;

struct {

unsigned char nLow;

unsigned char nHigh;

};

};复制代码或者

union {

unsigned int num;

struct {

unsigned int nLow        :8;

unsigned int nHigh         :8;

};

};

int a = num;

int b = nLow;

int c = nHigh;复制代码非常好的解决方案,只占用一个整数的空间,可以对高8位、低8位、整个16位引用而不需要计算。

(3) 联合体中的位域(补充)

union {

unsigned int z;

unsigned int z1 : 1;

unsigned int z2 : 2;

unsigned int z3 : 3;

unsigned int z4 : 4;

};

z = 0xFFFF;

a = z1;

b = z2;

c = z3;复制代码结果:a = 1, b = 3, c = 7;

(4)结构体中的位域长度0 (补充)

union ZZ{

unsigned int z1 : 1;

unsigned int z2 : 1;

unsigned int z3 : 1;

unsigned int z4 : 1;

unsigned int : 0;

unsigned int z6 : 1;

}zz;复制代码长度为0的位域是通知编译器不要在以前的单元上分配位域了,代表着一个单元的位域分配结束,这个长度为0的位域不能有名字。以后的位域分配要新开辟一个单元。

以上的例子中,z1, z2, z3, z4共用一个unsigned int中的4个bit,z6单独使用一个unsigned int; 此结构体共占用两个unsigned int空间

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

eb7fd645cf2c7b6925f0d256219e974a.png

(265844268)

出0入0汤圆

3ed6c70162101cdc4cfc0ceaf175c8cd.png

楼主|

发表于 2012-12-20 14:48:53

|

只看该作者

非常感谢53楼热心的童鞋指出错误。

(4)结构体中的位域长度0 (补充)

代码部分的union应为struct。

822e4eb8c4e12f42de36befcc2bacbd0.png

(288025870)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-7 21:15:31

|

只看该作者

楼主继续加油~~~

cc787d85121e39f6b379b18aa2c85b5b.png

(288021053)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-7 22:35:48

|

只看该作者

很好的教程啊!

0ed2864d8f82c820670b0c985b81d54d.png

(287992031)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-8 06:39:30

|

只看该作者

看完该贴,纠正了我原来在

http://www.ourdev.cn/forum.php?m ... p;page=7#pid5725866

中对匿名结构体的片面理解。我原来认为,只是结构体类型可以匿名,没想到结构体变量也可以匿名。

0ed2864d8f82c820670b0c985b81d54d.png

(287989613)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-8 07:19:48

|

只看该作者

发现一矛盾之处。

帖子提到,“3.1 C标准中提及的匿名结构体和联合体(草稿原文引用)(C标准中提及的匿名结构(联合)体应该只适用于有名结构体(联合)中的匿名结构(联合)体成员)”。就是说匿名结构体一定要是另外一个实名结构体的成员。不可以一上来就定义匿名结构体。

但是,在“IO430.h系列头文件的寄存器声明方式”给出的实例中,一上来定义的union就是匿名的,而且说其成员可被看作全局变量。这是否与上述c标准矛盾?

0ed2864d8f82c820670b0c985b81d54d.png

(287989596)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-8 07:20:05

|

只看该作者

在“记得某位网友曾提出过这样的问题,要高效的使用一个整数的高8位和低8位,则可以用如下代码解决:”给出的实例也是如此,一上来就定义了匿名联合体,而内部的成员结构体也是匿名的,并说成员变量都变成了全局变量。觉着这样也太神奇了?

0ed2864d8f82c820670b0c985b81d54d.png

(287989365)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-8 07:23:56

|

只看该作者

按此类推,楼主给出的第一个“基本用法”中的第一句话:

struct AA{ int a; int b;}; //结构体的声明和定义

是否等价于定义了一个匿名结构体?然后可直接按全局变量访问:

a = 0;

9db20ef0063447fba70c4dd70996c26e.png

(287988531)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-8 07:37:50

|

只看该作者

mark msp430

0ed2864d8f82c820670b0c985b81d54d.png

(287988308)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-8 07:41:33

|

只看该作者

在IAR中验证了一下。

struct AA{ int a; int b;}; //结构体的声明和定义

a = 0;

不成立。报告a没有定义。

但是:

struct { int a; int b;}; //结构体的声明和定义

a = 0;

成立。

真的很神奇。要想等效全局变量,要求结构体类型名(如基本用法中的AA)和结构体变量名(如基本用法中的s1)都是匿名。

进一步,c标准中“匿名结构体一定要是另一个实名结构体的成员”的要求已经没必要了。

eb7fd645cf2c7b6925f0d256219e974a.png

(287977954)

出0入0汤圆

3ed6c70162101cdc4cfc0ceaf175c8cd.png

楼主|

发表于 2012-4-8 10:34:07

|

只看该作者

xizi 发表于 2012-4-8 07:41 thread-5465091-1-1.html

在IAR中验证了一下。

struct AA{ int a; int b;}; //结构体的声明和定义

a = 0;

An unnamed member of structure type with no tag is called an anonymous structure; an

unnamed member of union type with no tag is called an anonymous union. The members

of an anonymous structure or union are considered to be members of the containing

structure or union. This applies recursively if the containing structure or union is also

anonymous.

这是草稿原文,我英文不好,也翻译不明白。你英文肯定比我好多了,最好解释一下。上面帖子中的内容都是我个人的理解,所以没用肯定的语气。

各种编译器是允许对C进行各种扩展的(可能标准不支持全局的,但IAR支持也不为过,标准未明确提出匿名结构体这个概念的时候,IAR就已经使用了。)。

匿名结构体是没有名字(变量名)的结构体,同时肯定也没有类型名,否则就是一个结构体类型的声明了。

匿名结构体在C11中第一次提出,以前的标准结构体用法均不属于匿名结构体。

a73eb88871c5acb415da4fdcce119772.png

(287976130)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-8 11:04:31

|

只看该作者

匿名结构体,联合体 不同编译器,有一些不一样。

eb7fd645cf2c7b6925f0d256219e974a.png

(287975457)

出0入0汤圆

3ed6c70162101cdc4cfc0ceaf175c8cd.png

楼主|

发表于 2012-4-8 11:15:44

|

只看该作者

uc_c++ 发表于 2012-4-8 11:04 thread-5465091-1-1.html

匿名结构体,联合体 不同编译器,有一些不一样。

您是uc_cpp的马甲么,您的cpp功底不浅,受教受教。

我的例子大部分都是只针对IAR的。对于一些标准,有些编译器支持,有些不支持。对于非标准,很多编译器也扩展了。只要是好的特性,我们去使用他绝对没错。

a73eb88871c5acb415da4fdcce119772.png

(287972080)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-8 12:12:01

|

只看该作者

lcofjp 发表于 2012-4-8 11:15 thread-5465091-1-1.html

您是uc_cpp的马甲么,您的cpp功底不浅,受教受教。

我的例子大部分都是只针对IAR的。对于一些标准,有些 ...

原先不知道用户名 可以用'++'字符,所以用'pp'。

c++ 比 cpp 好。

0ed2864d8f82c820670b0c985b81d54d.png

(287935865)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-8 22:15:36

|

只看该作者

关注一下c11:

http://tieba.baidu.com/p/1339583282

C1X In 2007, work began on another revision of the C standard, informally called "C1X" until its official publication on 2011-12-08. The C standards committee adopted guidelines to limit the adoption of new features that have not been tested by existing implementations. C1X In 2007,基于一个对C标准的又一修订版,在2011-12-08官方出版之前,被非正式的称呼为:C1X。

C标准委员会采纳了一些指导方针来限制未被现存编译器测试的新的特性。 The C11 standard adds numerous new features to C and the library, including type generic macros, anonymous structures, improved Unicode support, atomic operations, multi-threading, and bounds- checked functions. It also makes some portions of the existing C99 library optional, and improves compatibility with C++. C11标准为C语言及库添加了若干新特性,包括泛型宏定义、匿名结构体、更好的Unicode支持、原子操作、多线程、边界检测函数。新标准将C99中的一部分变为可选(非必需),提高了与C++兼容性。

0ed2864d8f82c820670b0c985b81d54d.png

(287928180)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-9 00:23:41

|

只看该作者

本帖最后由 xizi 于 2012-4-9 01:05 编辑

lcofjp 发表于 2012-4-8 10:34 thread-5465091-1-1.html

An unnamed member of structure type with no tag is called an anonymous structure; an

unnamed membe ...

原文的头两句比较简单,就不翻译了。后两句提到:

The members of an anonymous structure or union are considered to be members of the containing

structure or union. This applies recursively if the containing structure or union is also anonymous.

是说:匿名结构体/联合体的成员会被看作是父结构体/联合体的成员。当父结构体/联合体也是匿名时,这种归属是递进的。

不知哪里可以看到更多的原文?这段原文中没有明确提到“匿名结构体应是另一个实名结构体的成员”。

“可能标准不支持全局的,但IAR支持也不为过” -- c标准或许就支持全局也不一定。

“标准未明确提出匿名结构体这个概念的时候,IAR就已经使用了。”--正确。标准是一个从实践到理论的过程。IAR,GCC都进行了好的实践,C11就把它推广开来。

提一下KEIL。keil不支持匿名结构体,这点上不如IAR。keil甚至都不支持c99的特性 for(int i = 0; i < 10; i++);

de05d2b46c3f679d641db0c411aeed72.png

(287927978)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-9 00:27:03

|

只看该作者

是转载还是翻译?

0ed2864d8f82c820670b0c985b81d54d.png

(287925953)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-9 01:00:48

|

只看该作者

abuffalo 发表于 2012-4-9 00:27 thread-5465091-1-1.html

是转载还是翻译?

你在问哪个贴?

c11概述一贴是转载,链接已经给出。匿名结构体的两句解释一贴是翻译。

当前离线积分

精华汤圆新手上路

{*}

417ed852d27e8c159716eac4e3779f56.gif

e9b770b0cf058981f7d2866c918462d6.png

(287925410)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-9 01:09:51

|

只看该作者

学习 收藏

eb7fd645cf2c7b6925f0d256219e974a.png

(287903448)

出0入0汤圆

3ed6c70162101cdc4cfc0ceaf175c8cd.png

楼主|

发表于 2012-4-9 07:15:53

|

只看该作者

abuffalo 发表于 2012-4-9 00:27 thread-5465091-1-1.html

是转载还是翻译?

本文属于原创

eb7fd645cf2c7b6925f0d256219e974a.png

(287902692)

出0入0汤圆

3ed6c70162101cdc4cfc0ceaf175c8cd.png

楼主|

发表于 2012-4-9 07:28:29

|

只看该作者

xizi 发表于 2012-4-9 00:23 thread-5465091-1-1.html

原文的头两句比较简单,就不翻译了。后两句提到:

The members of an anonymous structure or union are  ...

正版我也没有,网络受限我也上传不了资料,可以看考一下这个委员会的手稿,这部分在6.2.7.1

http://ishare.iask.sina.com.cn/f/22734453.html

(ISO/IEC 9899:201X)

eb7fd645cf2c7b6925f0d256219e974a.png

(287897461)

出0入0汤圆

3ed6c70162101cdc4cfc0ceaf175c8cd.png

楼主|

发表于 2012-4-9 08:55:40

|

只看该作者

xizi 发表于 2012-4-9 00:23 thread-5465091-1-1.html

原文的头两句比较简单,就不翻译了。后两句提到:

The members of an anonymous structure or union are  ...

Keil是编译器中的异类,我认为它是一个“保守”的编译器。

4c4ee8f38c92922a5ea156b4dd9c9ee6.png

(287873776)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-9 15:30:25

|

只看该作者

关注。。。谢谢!补充C语言知识!

0ed2864d8f82c820670b0c985b81d54d.png

(287855045)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-9 20:42:36

|

只看该作者

lcofjp 发表于 2012-4-9 07:28 thread-5465091-1-1.html

正版我也没有,网络受限我也上传不了资料,可以看考一下这个委员会的手稿,这部分在6.2.7.1

http://isha ...

下载了。这部分在6.7.2.1,item13。不是6.2.7.1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

fb558019fe4d7a7c8bf0d485c9776a5e.png

(287854497)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-9 20:51:44

|

只看该作者

谢了,看看。。。。。。。。

2ec7d85c980dfb78cc651702605fee9f.png

(287853196)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-9 21:13:25

|

只看该作者

太帅了   真的长见识了

谢谢 你们

661244146cd76023dc3d019dd404ec24.png

(287598468)

出50入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-12 19:58:53

|

只看该作者

关注下,  充电ing.......

63e9d9075a493dd6c01e5223aa0b8fa1.png

(287446152)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-14 14:17:29

|

只看该作者

貌似结构体这东西用起来很是方便那!

当前离线

精华汤圆注册会员

{*}

417ed852d27e8c159716eac4e3779f56.gif

010d69ff777fb3ef92c63db4ee538c81.png

(286923076)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-20 15:35:25

|

只看该作者

mark^^^^^^^^

头像被屏蔽

(286587725)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-24 12:44:36

|

只看该作者

Cool !

4e3a061a6cee689711774664b8e32641.png

发表于 2012-4-29 22:12:50

|

只看该作者

mark明天看

da2833d0807c877eacc36ffbb4d988b0.png

(285429637)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-5-7 22:26:04

|

只看该作者

楼主加油~~~慢慢写~保证每期都看

29de215d539f29214e8f35a8d312ee0b.gif

积分

精华汤圆新手上路

{*}

417ed852d27e8c159716eac4e3779f56.gif

ec9b8382d7898edc87f7ab924434ad85.png

(283301011)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-1 13:43:10

|

只看该作者

写的太好了

当前离线积分

精华汤圆新注册者

{*}

417ed852d27e8c159716eac4e3779f56.gif

c4c6ce23a97533d5ce42094a85693f69.png

(283142122)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-3 09:51:19

|

只看该作者

啊哈 貌似在哪儿看到过

当前离线积分

精华汤圆新注册者

{*}

417ed852d27e8c159716eac4e3779f56.gif

c4c6ce23a97533d5ce42094a85693f69.png

(283142078)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-3 09:52:03

|

只看该作者

这下头文件好多东西都能看懂了  顶一个

ba2dea7e54e51f36e94b10b61a87da92.png

(283120354)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-3 15:54:07

|

只看该作者

mark一下…………

ae1bafc4cecf4b79ee66b1ac4af7eb1c.png

(283048177)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-4 11:57:04

|

只看该作者

学习学习,谢谢

ffe31863e73ad9db11b767484d1986f4.png

(282062305)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-15 21:48:16

|

只看该作者

很好的教程啊!

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-16 09:49:23

|

只看该作者

不错的教程,正在用IAR和430单片机呢,控制gsm模块gprs通信和短信处理

c83ec54661789ed0a4929a75af6812b6.png

(281977922)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-16 21:14:39

|

只看该作者

不错,学习了

当前离线积分

精华汤圆新手上路

{*}

417ed852d27e8c159716eac4e3779f56.gif

8bfb70c12631edb22bb8a7e09eefa755.png

(281967607)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-17 00:06:34

|

只看该作者

楼主V5,呵呵

f41a6296ddb09ada3428b115831e754a.png

(281640542)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-20 18:57:39

|

只看该作者

不错的教程

3e46a00277439586cbf4ff9a6d48a8e0.png

(281631179)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-20 21:33:42

|

只看该作者

mark!!!!!!!!!!

a9a2c46f90439d87a068a8ac8e6622e7.png

(281505815)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-22 08:23:06

|

只看该作者

楼楼主加油哈~~学习学习

14b9b2422eb079f497bb9d88021e4249.png

(281311381)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-24 14:23:40

|

只看该作者

很好的教程啊!

d1974bff46a8d557ca3479fe56adb1a8.png

(280932238)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-6-28 23:42:43

|

只看该作者

很好教程 以后要考虑多用用这两个 谢谢楼主分享!!!!

74ae80ef54c8dc78a4a5195b9243dada.png

(280100885)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-7-8 14:38:36

|

只看该作者

先收藏,谢谢

8ed025a1555bf269a27a2797d9aea108.png

(279991987)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-7-9 20:53:34

|

只看该作者

学习了。。。。

积分

精华汤圆新手上路

{*}

417ed852d27e8c159716eac4e3779f56.gif

db910b407d5ec2a04c6c1fc6560cb6df.png

(277334375)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-8-9 15:07:06

|

只看该作者

mark 学习了

d8fdc898b2edd7174f63a03d8f986f08.png

(277333499)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-8-9 15:21:42

|

只看该作者

mark

465bea2fe8731bbe4155d1b0082c53c0.gif

4e3a061a6cee689711774664b8e32641.png

发表于 2012-8-14 22:15:06

|

只看该作者

很好的教程,谢谢!!!

609948dd065a31f864e19392569d52e8.png

(276875008)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-8-14 22:43:13

|

只看该作者

先标记!

dd5a78096bbd5a45a7f112a4823d1fd8.png

(266429882)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-12-13 20:08:39

|

只看该作者

这个必须mark之

6032ef64360e45ccee8ca4948e423c44.png

(265848015)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-12-20 13:46:26

|

只看该作者

楼主亲,你最后定义的联合体并没有像你描述的那样哦.

(4)结构体中的位域长度0 (补充)

长度为0的位域是通知编译器不要在以前的单元上分配位域了,代表着一个单元的位域分配结束,这个长度为0的位域不能有名字。以后的位域分配要新开辟一个单元。

以上的例子中,z1, z2, z3, z4共用一个unsigned int中的4个bit,z6单独使用一个unsigned int; 此结构体共占用两个unsigned int空间

应该是下面的定义才对.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

eb7fd645cf2c7b6925f0d256219e974a.png

(265844723)

出0入0汤圆

3ed6c70162101cdc4cfc0ceaf175c8cd.png

楼主|

发表于 2012-12-20 14:41:18

|

只看该作者

wangxj_nemo 发表于 2012-12-20 13:46 thread-5465091-1-1.html

楼主亲,你最后定义的联合体并没有像你描述的那样哦.

(4)结构体中的位域长度0 (补充)

您好,非常感谢细心的您,确实是有问题,属于笔误。是结构体(struct)才有这个效果,而代码给出的是联合体(union)。

4e3a061a6cee689711774664b8e32641.png

发表于 2012-12-20 15:03:32

|

只看该作者

好东西学一学

e17e372f2c7d71c80ecd324a8c3d07a8.png

(265839624)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-12-20 16:06:17

|

只看该作者

465bea2fe8731bbe4155d1b0082c53c0.gif

465bea2fe8731bbe4155d1b0082c53c0.gif

465bea2fe8731bbe4155d1b0082c53c0.gif

23f9a1eedd1defa0c4de8f29d4698c8b.png

(265832263)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2012-12-20 18:08:58

|

只看该作者

写的太好了

7823e7c9abd50de443a8bd9fd378e8a2.png

(263962158)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-1-11 09:37:23

|

只看该作者

写的很好让人看了一目了然。

eddc9a0618bc3b57b955bf9d8fb61c71.gif

43a9ff86d8490bb458c4f6b3e73a95b5.png

(259548598)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-3-3 11:36:43

|

只看该作者

不错,学习了

ae1bafc4cecf4b79ee66b1ac4af7eb1c.png

(259345058)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-3-5 20:09:03

来自手机

|

只看该作者

不错,学习学习

67f733daca20ae4acd31a0aed0076740.png

(259339254)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-3-5 21:45:47

来自手机

|

只看该作者

支持下!

4ed39bee8be3d017c81d1534db83c62c.png

(257900048)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-3-22 13:32:33

|

只看该作者

mark,学习中

bbf3c0fcced741c32b5a0a43c6c2c682.png

(257345031)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-3-28 23:42:50

|

只看该作者

不错不错啊

dcf23f88f5e6032d54f1b4e51778745f.png

(257310423)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-3-29 09:19:38

|

只看该作者

记下~~~~~

当前离线积分

精华汤圆注册会员

{*}

417ed852d27e8c159716eac4e3779f56.gif

02515fb3ecf74cc7ba942204655fa01b.png

(257274832)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-3-29 19:12:49

|

只看该作者

用在串口发送多组不同类型的数据比较方便。

efafff9d77b05f4997996349b19a570c.png

(256223142)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-4-10 23:20:59

|

只看该作者

顶一下

465bea2fe8731bbe4155d1b0082c53c0.gif

22b1a9a09f62b756ba38ab568459bbdb.png

(255392987)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-4-20 13:56:54

|

只看该作者

谢谢!补充C语言知识!

积分

精华汤圆注册会员

{*}

417ed852d27e8c159716eac4e3779f56.gif

a83464b66d7ef9582d45242a430cece4.png

(254264446)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-5-3 15:25:55

|

只看该作者

很好的教程,谢谢分享

e0ddce706e9cb2c5773bef3ff6583aaa.png

(254264287)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-5-3 15:28:34

|

只看该作者

学习,谢谢!!!

29de215d539f29214e8f35a8d312ee0b.gif

积分

精华汤圆新手上路

{*}

417ed852d27e8c159716eac4e3779f56.gif

3262093ef18efcc8d15d44292967d123.png

(253975776)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-5-6 23:37:05

|

只看该作者

mark markmark mark

294bf1eb45c9217d04b31a81d836666b.png

(253934852)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-5-7 10:59:09

|

只看该作者

mark,thanks.

eda260f27c301ed7b6de614e57837c48.png

(253826079)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-5-8 17:12:02

|

只看该作者

手就去。原来我的理解太肤浅了……

6919ac11a69efce23b2e3b0657b8733d.png

(245553205)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-8-12 11:13:16

来自手机

|

只看该作者

mark……

顶一个…

4e3a061a6cee689711774664b8e32641.png

发表于 2013-8-21 14:10:45

|

只看该作者

记号

顶一个

当前离线

精华汤圆中级会员

{*}

417ed852d27e8c159716eac4e3779f56.gif

f17beed96585b76c4d1acc6402a932a2.png

(244519605)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-8-24 10:19:56

|

只看该作者

很不错的。值得收藏

32282bacd0977923e89a7af277c80803.png

(244517834)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-8-24 10:49:27

|

只看该作者

很好,学习学习

4e3a061a6cee689711774664b8e32641.png

发表于 2013-8-25 10:46:02

|

只看该作者

记录一下,

当前离线积分

精华汤圆VIP

{*}

417ed852d27e8c159716eac4e3779f56.gif

6452bd2977005c460fe0a8616f8268d7.png

(243792580)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-9-1 20:17:01

|

只看该作者

这个非常好!!!!!!!!!!

精华汤圆高级会员

{*}

417ed852d27e8c159716eac4e3779f56.gif

fe9962ac1aca307c25f347ac60205dfa.png

(243789927)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-9-1 21:01:14

|

只看该作者

mark!

842fba350f2c7d57f06b70dbbd41c6a4.gif

当前离线积分

精华汤圆注册会员

{*}

417ed852d27e8c159716eac4e3779f56.gif

216a155f6d60f8ae481dec1688f4eec1.png

(243710051)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-9-2 19:12:30

|

只看该作者

看来都是得多实践一下才行。以前就只知道前面的三种结构体定义。所谓的匿名还真是学习了。

当前离线

精华汤圆中级会员

{*}

417ed852d27e8c159716eac4e3779f56.gif

1627685af08b70f818e18994d0f7dfa3.png

(243702889)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-9-2 21:11:52

|

只看该作者

受教匪浅

fb4c6873717444d71ed1a5e4a78f9070.png

(243477285)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-9-5 11:51:56

|

只看该作者

eddc9a0618bc3b57b955bf9d8fb61c71.gifmark

40a3f690446803241e61fd6261b2d4d3.png

(243371767)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2013-9-6 17:10:34

|

只看该作者

谢谢LZ分享经验!学习了!

精华汤圆VIP

{*}

417ed852d27e8c159716eac4e3779f56.gif

2577c1ad1c8a8beaa4821eb20debae9b.png

(227118653)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-3-13 19:55:48

|

只看该作者

mark!!!!!!!

89739ba1c05e6dfa4f9723c76ff844aa.png

(226593139)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-3-19 21:54:22

|

只看该作者

挺不错的

8825556dd50e7fdc6af45528abdd30df.png

(226589799)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-3-19 22:50:02

|

只看该作者

过来看卡

5b4d694f87567c2730a17ec40058abaa.png

(226583817)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-3-20 00:29:44

|

只看该作者

mark

bdfda4ea27850ec47481d30f8bb362be.png

(226553479)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-3-20 08:55:22

|

只看该作者

讲得不错,学习了!

42f8ce93ae10c807a8c1cd5ceac3ac3c.png

(226365425)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-3-22 13:09:36

|

只看该作者

很好的教程

8825556dd50e7fdc6af45528abdd30df.png

(225222247)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-4-4 18:42:34

|

只看该作者

过来学习一下

a46b87878dc3d7d21854a013af04ac04.png

(225222102)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-4-4 18:44:59

|

只看该作者

过来看看

精华汤圆VIP

{*}

417ed852d27e8c159716eac4e3779f56.gif

2db069f3b5a72d6930bf8d4a1aa43d45.png

(225213978)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-4-4 21:00:23

|

只看该作者

学习学习下

积分

精华汤圆新注册者

{*}

417ed852d27e8c159716eac4e3779f56.gif

1d9436418890fcc618809366c0287df9.png

(225155037)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-4-5 13:22:44

|

只看该作者

学习下,做个标记

积分

精华汤圆新手上路

{*}

417ed852d27e8c159716eac4e3779f56.gif

4d58f88371429373c3ddc2558a0c5ad4.png

(224604430)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-4-11 22:19:31

|

只看该作者

#在这里快速回复#頭好昏~

43c2421a6e33c83285f5599360f983f6.png

(219869968)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-6-5 17:27:13

|

只看该作者

做个小标记。。。。。。。。结构体

0671c0724a6a7d825b5e0083d07708a2.png

(219849754)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-6-5 23:04:07

|

只看该作者

mark......

4e3a061a6cee689711774664b8e32641.png

发表于 2014-8-12 21:11:38

|

只看该作者

做个小标记,C语言到这里就没用过了~

d17e448bf585732b2849715bcfc87f25.png

(211082142)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-9-15 10:30:59

|

只看该作者

老大厉害。长期潜水员要加油了 ,努力升级

26145b173b868108b166c57235fd16cb.png

(209852780)

出0入0汤圆

4e3a061a6cee689711774664b8e32641.png

发表于 2014-9-29 16:00:21

|

只看该作者

准备用,mark下!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值