https://eqcn.ajz.miesnfu.com/wp-content/plugins/wp-3d-pony/live2dw/lib/L2Dwidget.min.js

C语言 __attribute__

__attribute__

注意__是两个下划线

设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )

格式__attribute__ ((attribute-list))

 

attribute-list

aligned

指定对象的对齐格式(以字节为单位)

packed

该属性对struct 或者union 类型进行定义,设定其类型的每一个变量的内存约束

告诉编译器取消结构在编译过程中的优化对齐(使用1字节对齐)

at

绝对定位,可以把变量或函数绝对定位到Flash中,或者定位到RAM。

FLASH:u16 Flash[512] __attribute__((at(0x0800F000)));

RAM:u8 RAM[RAM_LEN] __attribute__ ((at(0X20001000)));

section

在ARM编译器编译之后,代码被划分为不同的段,

RO Section(ReadOnly)中存放代码段和常量,

RW Section(ReadWrite)中存放可读写静态变量和全局变量,

ZI Section(ZeroInit)是存放在RW段中初始化为0的变量。

可多个配合使用

u8 Addr[100] __attribute__ ((section ("RAM"), zero_init,aligned(4)));

 

posted @ 2022-01-06 16:52  SLOWBY  阅读(437)  评论(0)    收藏  举报