免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1115 | 回复: 0

《Linux设备驱动可开发技术及应用》笔记 1.16 [复制链接]

论坛徽章:
0
发表于 2011-01-16 19:26 |显示全部楼层
《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等,

详细信息可参考:http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Variable-Attributes.html#Variable-Attributes


__attribute__的博客简介:GNU C 扩展之__attribute__ 机制简介






您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP