Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1273635
  • 博文数量: 160
  • 博客积分: 4132
  • 博客等级: 中校
  • 技术积分: 2086
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-06 21:56
文章分类

全部博文(160)

文章存档

2012年(25)

2011年(120)

2010年(15)

分类: 嵌入式

2011-01-16 19:26:29

《Linux设备驱动可开发技术及应用》这本书看了得有一个礼拜了,今天看完第十章 程序一般同时包含head dev app,越来越综合 也更容易看书我不懂的地方,怕查过之后又忘 在博客记录一下

主要问题还是在Linux C上,有些函数或者宏还看不出细节。以后第一眼看不出细节的就记下来 今天只记了不懂的关键字,日后加上宏可能条理会清晰些。



一、void指针:
  1. (Void *)&XXXX 和 (const void *XXXX
  查了半天貌似不是什么高端语句 就是:指针地址指向XXXX地址,括号的只是作用是确定结合顺序。用来说明是是空类型的指针 目的是数据类型更广 易于赋值。



二、break语句:
  1. while(1)
  2. {
  3.     if() break;
  4. }
  以前一直以为break“跳出当前语句”的意思是跳出上述的if,今天查了下谭浩强的书;
  改正为:if为真时执行break跳出while,为假时执行if语句下的仍在while中的语句
(原来认为的错误理解:××此时的if如果是真 顺序进行到下一条,如果if为假 则执行break、break的结果是去执行whlie的下一条语句。××)



三、__attribute__语句

  1. typedef struct
  2. {
  3.  ... ...
  4. }__attribute__ ((packed)) XXXX;

语法格式为:__attribute__ ((attribute-list))   其位置约束为:放于声明的尾部“;”之前。

packed

使用该属性对struct或者union类型进行定义,设定其类型的每一个变量的内存约束。当用在enum类型定义时,暗示了应该使用最小完整的类型(it indicates that the smallest integral type should be used)。

下面的例子中,my-packed-struct类型的变量数组中的值将会紧紧的靠在一起,但内部的成员变量s不会被“pack”,如果希望内部的成员变量也被packed的话,my-unpacked-struct也需要使用packed进行相应的约束。

  1. struct my_unpacked_struct
  2. {
  3.    char c;
  4.    int i;
  5. };

  6.          
  7. struct my_packed_struct
  8. {
  9.    char c;
  10.    int i;
  11.    struct my_unpacked_struct s;

  12. }__attribute__ ((__packed__));



还有个用法类似packed

使用该属性可以使得变量或者结构体成员使用最小的对齐方式,即对变量是一字节对齐,对域(field)是位对齐。下面的例子中,x成员变量使用了该属性,则其值将紧放置在a的后面:

  1. struct test
  2. {
  3.    char a;
  4.    int x[2] __attribute__ ((packed));
  5. };

其它可选的属性值还可以是:cleanupcommonnocommondeprecatedmodesectionsharedtls_modeltransparent_unionunusedvector_sizeweakdllimportdlexport等,

详细信息可参考:


__attribute__的博客简介:






阅读(9701) | 评论(12) | 转发(4) |
给主人留下些什么吧!~~

sillyboytao2011-01-25 12:07:47

0vk0: 你的第二点应该是这样:if如果是真 顺序进行到break,如果if为假 不执行break。所以才没跳出循环,.....
多谢高手指点,刚才查了些资料 确实是if为真时执行break跳出while 谢谢谢谢~

0vk02011-01-25 08:12:06

你的第二点应该是这样:if如果是真 顺序进行到break,如果if为假 不执行break。所以才没跳出循环,

sillyboytao2011-01-18 17:45:17

版主杀手: 好事 不错.....
嘿嘿 我新手一个 肯定有不少错误,希望高手们指点指点~

sillyboytao2011-01-18 17:44:09

chxlinux: .....

sillyboytao2011-01-18 17:43:32

swanrobin: 楼主是个细心的人,必成大器啊!.....
哈哈 得到老鸟们的鼓励 信心大增啊~