Forum: Compiler & IDEs arm-elf-gcc Arm7tdmi unterschied zwischen long und int


von Sven (Gast)


Lesenswert?

Hallo zusammen

Wo ist der unterschied zwischen einer als "long" deklarierten Variable 
und einer, die als "int" deklariert worden ist?

Beide sind 4 Byte groß, das habe ich mit sizeof schon herausbekommen. 
Kann es sein, dass garkein Unterschied existiert?

Sven

von (prx) A. K. (prx)


Lesenswert?

In der Sprache besteht durchaus in Unterschied, es sind verschiedene 
Typen, aber in der Darstellung auf der Zielmaschine besteht keiner.

von Karl H. (kbuchegg)


Lesenswert?

Sven schrieb:

> Beide sind 4 Byte groß, das habe ich mit sizeof schon herausbekommen.
> Kann es sein, dass garkein Unterschied existiert?

Bingo.
Auf diesem Arm, mit diesem Compiler, sind int und long gleichwertig. Was 
allerdings nicht heißt, dass dadurch int zu einem Alias für long wird. 
Ein int* ist nachwievor nicht kompatibel zu einem long*

von Sven (Gast)


Lesenswert?

Die frage stellt sich mir, weil uint32_t in der stdint.h als long 
definiert wird und nicht als int...

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Sven schrieb:
> Die frage stellt sich mir, weil uint32_t in der stdint.h als long
> definiert wird und nicht als int...

Dies und andere schöne Dinge, die einem immer wieder als "compiler 
spezifisch" um die Ohren gehauen werden, ist durch das ARM ABI 
definiert, und nicht abhängig vom Compiler.

Siehe auch (Kapitel 7.1.1):
http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf

--
Marcus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.