![](/img/trans.png)
[英]How do compilers implement __declspec(align(x)) / __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.