繁体   English   中英

__attribute__ ((aligned(x))) 做什么?

[英]What does __attribute__ ((aligned(x))) do?

对这个问题的现有答案对我来说没有一个更清楚。 我不知道当一个变量被声明为“在 x 字节的边界内”时它应该是什么意思,这是每个问题中关于这个问题的答案。 我需要一个实际的解释,举例说明它是什么,与没有该属性声明的变量相比它做了什么,以及为什么应该使用它。

额外问题:当在像这里这样的数组前面使用__attribute__ ((aligned (32))) double output[4]; ,这是否意味着数组的每个元素都对齐,或者只是整个数组?

提前致谢。

C++ 语言中没有__attribute__这样的东西。 GCC 和兼容编译器的__attribute__语言扩展。

__attribute__ ((aligned (X)))本质上与标准的alignas说明符相同:

// non-standard
__attribute__ ((aligned (32))) double output[4];

// standard
alignas(32) double output[4];

每个 object 都有一个 memory 地址,该地址指定 memory 中存储 ZA8CFDE6331BD59EB2ACZ966F8 的字节的位置。 地址的底层表示是一个 integer 数字。 当地址的编号可以被 X 整除时,memory 地址与 X 字节对齐

每种类型对 object 可以存储的地址都有最低要求。 alignas可用于增加要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM