博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
__attribute__
阅读量:4687 次
发布时间:2019-06-09

本文共 860 字,大约阅读时间需要 2 分钟。

GNU C的一大特色就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。
 
关键字__attribute__ 也可以对结构体(struct )或共用体(union )进行属性设置。大致有六个参数值可以被设定,即:aligned, packed, transparent_union, unused, deprecated 和 may_alias 。
 
1、aligned (alignment)
 
该属性设定一个指定大小的对齐格式(以字节 为单位),例如:
struct S {
  short b[3];
} __attribute__ ((aligned (8)));
typedef int int32_t __attribute__ ((aligned (8)));
该声明将强制编译器确保(尽它所能)变量类 型为struct S 或者int32_t 的变量在分配空间时采用8 字节对齐方式。
 
2、packed
使用该属性对struct 或者union 类型进行定义,不使用内存对齐,packed_struct 类型的变量数组中的值将会紧紧的靠在一起,aligned 属性使被设置的对象占用更多的空间,相反的,使用packed 可以减小对象占用的空间。
 
3、unused 
 使用该属性,表示可能用不到,函数参数中使用,表示参数可以不传,编译器也不会报错
 
//-------------------------------------------
 
 
__attribute__ 可以对函数属性进行设置,有const,noreturn
 
1、
__attribute__((noreturn)) 表示函数可能没有返回值,编译器处理时,没有返回值也不会报错
 
链接:  有详细介绍
 

转载于:https://www.cnblogs.com/bizhu/p/4101195.html

你可能感兴趣的文章
pinyin4j的使用
查看>>
Android_ 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法
查看>>
tcpcopy用法
查看>>
34个加速页面载入速度的技巧
查看>>
MAC Objective-C 开发经典书籍推荐
查看>>
OSGi bundle之间互相通信的方法
查看>>
C++ 沉思录——Chap8:一个面向对象程序范例
查看>>
.NET 的编码
查看>>
数据存储——手机内部文件存储
查看>>
HDU 2586 LCA
查看>>
linux安装openldap步骤
查看>>
九度OJ 1035:找出直系亲属(二叉树)
查看>>
hive left outer join的问题
查看>>
32位Win7下安装与配置PHP环境(二)
查看>>
图片、浏览器-HTML5/CSS3系列教程:使用SVG图片-by小雨
查看>>
[学习笔记]node.js中的path.extname方法
查看>>
[学习笔记]HTTP协议
查看>>
警告:Assigning to 'id<Delegate>' from incompatible type 'ViewController *const_st
查看>>
项目中字体比较粗,比较虚。
查看>>
杨延锟--ORACLE博客
查看>>