1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:

在TC下:struct my{ char ch; int a;} sizeof(int)=2;sizeof(my)=3;(紧凑模式)

在GCC下:struct my{ char ch; int a;} sizeof(int)=4;sizeof(my)=8;(非紧凑模式)

在GCC下:struct my{ char ch; int a;}__attrubte__ ((packed)) sizeof(int)=4;sizeof(my)=5

2. __attribute__关键字主要是用来在函数或数据声明中设置其属性。给函数赋给属性的主要目的在于让编译器进行优化。函数声明中的__attribute__((noreturn)),就是告诉编译器这个函数不会返回给调用者,以便编译器在优化时去掉不必要的函数返回代码。

GNU C的一大特色就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。

__attribute__书写特征是:__attribute__前后都有两个下划线,并且后面会紧跟一对括弧,括弧里面是相应的__attribute__参数。

__attribute__语法格式为:

__attribute__ ((attribute-list))

其位置约束:放于声明的尾部“;”之前。

函数属性(Function Attribute):函数属性可以帮助开发者把一些特性添加到函数声明中,从而可以使编译器在错误检查方面的功能更强大。__attribute__机制也很容易同非GNU应用程序做到兼容之功效。

GNU CC需要使用 –Wall编译器来击活该功能,这是控制警告信息的一个很好的方式。

packed属性:使用该属性可以使得变量或者结构体成员使用最小的对齐方式,即对变量是一字节对齐,对域(field)是位对齐。

最新文章

  1. Centos下设置VNC为3389端口
  2. Linux关于vm虚拟机复制后无法启动网卡
  3. 爬虫技术 -- 基础学习(三)理解URL和URI的联系与区别
  4. 【leetcode】3Sum Closest
  5. target标签对于优化用户体验的作用
  6. 检测网页是否可以打开, 再使用IE打开网页
  7. MYSQL注入天书之stacked injection
  8. VC++中内存对齐
  9. 关于Opengl中将24位BMP图片加入�一个alpha通道并实现透明的问题
  10. 作了点有意义 的事,加入CLOUDSTACK官方文档的中文翻译工作
  11. 《Lua游戏开发实践指南》读后感
  12. PEP8
  13. linux 下文件误删恢复
  14. 【面试笔试算法】牛客网一站通Offer编程题2016.4.19
  15. Linux安装任意版本的dotnet环境
  16. SVN下载与安装
  17. 我的C#跨平台之旅(五):使用IoC之依赖注入实现
  18. C++中如何对输出几位小数进行控制(setprecision)
  19. [转帖]一文看懂web服务器、应用服务器、web容器、反向代理服务器区别与联系
  20. 【Java----创建多级文件夹】

热门文章

  1. UVA 6475 Effective Infection Time
  2. iOS开发-使用代码退出应用程序,带动画。
  3. oracle 创建一个用户,并且设定只能访问指定的对象
  4. Velocity中文乱码问题解决方法
  5. springboot学习(四) 日志管理
  6. Atitit.linux 内核 新特性 新功能
  7. C/C++ 错误笔记-如果要释放内存,必须拿到内存的首地址进行释放
  8. 参数化--每个vuser使用不同的参数值
  9. cf #363 b
  10. 带你了解UIKit动力学