Ich versuche, eine Funktion auf 16-Byte-Grenze mit dem 'aligned (16)' -Attribut auszurichten. Ich habe folgendes: void __attribute__((aligned(16))) function() { }
C Funktionsausrichtung in GCC
(Quelle: http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html)
Aber wenn ich (gcc foo.c, keine Makefiles oder Linker-Skripte verwendet) kompilieren, bekomme ich folgende Fehlermeldung:
Foo.c : 99: Fehler: Ausrichtung kann nicht für 'Funktion'
Ich versuchte Ausrichten auf 4,8,32 usw., aber der Fehler bleibt gleich. Ich brauche dies, um eine Interrupt-Service-Routine für einen PowerPC-basierten Prozessor auszurichten. Was ist der richtige Weg?
Warum wollen Sie dies tun wollen? –
Das OP hat im vorletzten Satz genau erklärt, warum sie dies tun müssen. – caf
Eine andere erfreulich böse Verwendung zum Ausrichten von Funktionen ist das Speichern zusätzlicher Daten in den niedrigen Bits von Funktionszeigervariablen ... –