2012-10-08 22 views

回答

3

http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Type-Attributes.html

aligned (alignment)

該屬性指定爲指定類型的變量的最小對齊(以字節計)。例如,聲明:

  struct S { short f[3]; } __attribute__ ((aligned (8))); 
     typedef int more_aligned_int __attribute__ ((aligned (8))); 

力編譯器,以確保(只要它可以)中,每個可變其類型是結構S或more_aligned_int將一個8字節的邊界上分配和對準的至少。在SPARC中,將所有類型爲struct S的變量對齊到8字節的邊界允許編譯器在將一個類型爲struct S的變量複製到另一個變量時使用ldd和std(雙字加載和存儲)指令,從而提高運行時效率。

請注意,ISO C標準要求任何給定的結構體或聯合體類型的對齊至少是所討論的結構體或聯合體的所有成員的對齊的最低公倍數的完美倍數。這意味着您可以通過將對齊屬性附加到此類型的任何一個成員來有效調整結構或聯合類型的對齊方式,但上面示例中所示的符號是一種更明顯,直觀和可讀的方式請求編譯器調整整個結構或聯合類型的對齊方式。

因此,問題在於代碼有效要求編譯器64字節邊界(通常,這將一個8字節的邊界上對齊,由於因爲它是double陣列)上對齊t

+0

好的,謝謝! –