我想使用'aligned(16)'屬性將函數字節對齊到16字節的邊界。我做了以下內容:void __attribute__((aligned(16))) function() { }
C在GCC中的函數對齊
(來源:http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html)
但是當我編譯器(gcc foo.c的;不使用生成文件或鏈接腳本),我收到以下錯誤:
的foo.c :99:錯誤:對齊可能沒有被指定爲'函數'
我試着對齊到4,8,32等,以及錯誤仍然是一樣的。 我需要這個來爲基於powerpc的處理器調整一箇中斷服務程序。這樣做的正確方法是什麼?
你爲什麼要這麼做? – 2009-12-16 07:26:48
OP在第二句話中解釋了他們爲什麼需要這樣做。 – caf 2009-12-16 07:32:25
對齊函數的另一個令人愉快的惡意使用是將額外的數據存儲在函數指針變量的低位中... – 2010-12-20 04:25:52