Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26391
  • 博文数量: 6
  • 博客积分: 194
  • 博客等级: 入伍新兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-06 14:13
文章分类
文章存档

2011年(6)

最近访客

分类:

2011-03-11 14:06:11

《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__的博客简介:






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