Ich versuche 64 Bit lange Ganzzahlen unter OS X 10.5.6 zu erzwingen. läuft auf einem Apple MacBook Intel Core 2 Duo. Hier ist mein c-Code:Wie erzwinge ich 64-Bit-Ganzzahlarithmetik auf OS X?
#include<stdio.h>
int main()
{
long a = 2147483647; /*== 2^32 - 1*/
long aplus1;
printf("a== %d. sizeof(a) == %d \n", a, sizeof(a));
aplus1 = a+1;
printf("aplus1 = %d \n", aplus1);
}
Kompilieren ohne Schalter folgende Ausbeuten:
$ gcc testlong.c -o testlong ;./testlong
a== 2147483647. sizeof(a) == 4
aplus1 = -2147483648
Kompilieren mit den -m64 Schalter ergibt:
$ gcc testlong.c -o testlong -m64; ./testlong
a== 2147483647. sizeof(a) == 8
aplus1 = -2147483648
So ist die zweite Version ist offenbar mit 64-Bit-Speicher, erzeugt aber immer noch den Überlauffehler, obwohl 2^32 gut innerhalb des Bereichs einer 64-Bit-Ganzzahl liegen sollte. Irgendwelche Ideen?
Ich würde eine Lösung bevorzugen, die von einer GCC-Option erzwungen werden kann, anstatt dass ich mehrere Zeilen Quellcode ändern muss (mein aktuelles Problem ist nicht das obige Beispiel speziell, sondern ich muss lange Ganzzahlarithmetik in einem mehr erzwingen allgemeine Situation).
Danke für die schnelle Antwort! Dies scheint jedoch nicht zu funktionieren, entweder mit oder ohne den Schalter -m64. – seandbarrett