C Функциональное выравнивание в GCC

Я пробую к байту - выравнивают функцию к 16-байтовой границе с помощью 'выровненный (16)' атрибут. Я сделал следующее: void __attribute__((aligned(16))) function() { }

(Источник: http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html)

Но когда я компилирую (gcc foo.c; никакие make-файлы или используемые сценарии компоновщика), я получаю следующую ошибку:

Нечто c:99: ошибка: выравнивание не может быть указано для 'функции'

Я пытался выровняться к 4,8,32, и т.д. также, но ошибка остается тем же. Мне нужно это для выравнивания Процедуры обработки прерывания для находящегося в powerpc процессора. Каков корректный способ сделать так?

7
задан Sukanto 16 December 2009 в 07:01
поделиться

2 ответа

Почему бы вам просто не передать -falign-functions = 16 в gcc при компиляции?

8
ответ дан 6 December 2019 в 11:49
поделиться

Вероятно, вы используете старую версию gcc, которая не поддерживает этот атрибут. Ссылка на документацию, которую вы предоставили, предназначена для «текущей разработки» gcc. Просматривая различные выпуски, атрибут появляется только в документации для gcc 4.3 и последующих версий.

2
ответ дан 6 December 2019 в 11:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: