簡體   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