2016-05-30 10 views
-2

Ich programmiere C auf einer Arm-Cortex-CPU mit gcc-arm-none-eabi. Ich weiß, es ist 4-Byte-Ausrichtung von Test und Google.Wie viele Byte-Ausrichtung für Arm?

Aber gibt es irgendein Makro oder eine Variable, die definiert, wie viele Bytes Ausrichtung es ist? Ich muss wissen, falls dieses Programm irgendwann Port für eine andere CPU sein könnte.

+0

Werfen Sie einen Blick auf [#pragma pack (n)] (https: // gcc .gnu.org/onlinedocs/gcc-4.8.4/gcc/Structure-Packing-Pragmas.html) – LPs

+3

Es gibt keine einzelne Ausrichtung. Verschiedene Datentypen haben unterschiedliche Ausrichtung. – EOF

+0

Ausrichtung hat wenig mit Portabilität zu tun. – user3528438

Antwort

1

Ein Trick, um die Ausrichtung eines bestimmten Datentypen zu finden, ist es mit einem char in einer Struktur zu packen:

#define LONG_ALIGNMENT (sizeof (struct {char a, long b}) - sizeof (long)) 
#define INT_ALIGNMENT (sizeof (struct {char a, int b}) - sizeof (int))