打印

__align的用法是什么?

[复制链接]
840|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
关小波522|  楼主 | 2015-9-3 12:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
__align的用法是什么?
沙发
dsll2010| | 2015-9-8 09:14 | 只看该作者
/* Specifies a minimum alignment (in bytes) for variables of the
*  specified type.
*/
#define CY_ALIGN(align)     __align(align)

跟结构体成员内存对齐有关。

使用特权

评论回复
板凳
heping517| | 2015-9-9 19:49 | 只看该作者
楼上正解

使用特权

评论回复
地板
heping517| | 2015-9-9 19:50 | 只看该作者
楼主可以考虑用仿真器,仿真然后查看Flash的数据,是否对齐存储

使用特权

评论回复
5
zb0830| | 2015-9-10 12:59 | 只看该作者
__align 关键字指示编译器在 n 字节边界上对齐变量。

__align 是一个存储类修饰符。 它不影响函数的类型。
语法
__align(n)

其中:
n

是对齐边界。

对于局部变量,n 可以具有值 1、2、4 或 8。

对于全局变量,n 可以具有最大为 2 的 0x80000000 次幂的任何值。

__align 关键字紧靠变量名称前面放置。
用法

如果声明的变量的常规对齐边界小于 n,__align(n) 是非常有用的。 八字节对齐方式可以显著提高 VFP 指令的性能。

可以将 __align 与 extern 和 static 一起使用。
限制

由于 __align 是存储类修饰符,因此不能将其用于:

类型,包括 typedef 和结构定义

函数参数。

只能进行过对齐。 也就是说,可以将两个字节的对象按 4 个字节对齐,而不能将 4 个字节的对象按两个字节对齐。
帵椺
__align(8) char buffer[128]; // buffer starts on eight‑byte boundary
void foo(void)
{
  ...
  __align(16) int i; // this alignment value is not permitted for
  // a local variable
  ...
}

__align(16) int i; // permitted as a global variable.

使用特权

评论回复
6
上山砍老虎| | 2015-9-10 13:03 | 只看该作者
学习了,这个功能还用的少

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

564

帖子

1

粉丝