您现在的位置是:首页 >学无止境 >GNU C机制之__attribute__网站首页学无止境
GNU C机制之__attribute__
简介GNU C机制之__attribute__
0 Preface/Foreword
__attribute__(attribute),是GCC的扩展功能,用于设置变量(Variable Attribute)、类型(Type Attribute)、函数的属性(Function Attribute)。
跨平台中,需要考虑的问题如下:
- endian order(字节序)
- variable length(变量长度)
- memory aligned(内存对齐)
字节序:表示数据的高字节存在内存的地位还是高位;数据低字节存在低内存,那么就是小端对齐;数据的高字节存在低内存,那么就是大端对齐;
变量长度:在不同的编译器中,同一种数据类型,变量所占用的内存会存在差异,比如int类型,有些编译器为2字节,有些编译器为4字节;当然还会根据操作系统而产生差异,比如32bit的操作系统,指针变量为4个byte,但是64-bit操作系统,指针变量为8个byte;
内存对齐:不同的操作系统存在差异,有些操作系统没有内存对齐那么等同于1字节对齐;有些系统默认4字节内存对齐,也有写系统默认是8字节对齐;
1 packed功能介绍
用于取消内存对齐功能(1字节内存对齐),格式为:
__attribute__((packed))
2 aligned功能介绍
用于设置内存对齐方式(需要编译器和系统都支持),格式为:
__attribute__((aligned(2)))
__attribute__((aligned(4)))
__attribute__((aligned(8)))
3 at功能介绍
用于固定变量位置,可以为flash位置(用于芯片相关特性,固化信息,出厂设置的参数),也可以是RAM位置,可以通过map文件进行查看具体效果,格式为:
__attribute__((at(0xxxxxxxxx)))
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。