Dieses von einer Frage zum Thema bignum Bibliotheken und gcc spezifischen Hacks der Sprache C heute früher entstanden Insbesondere diese beiden Erklärungen wurden verwendet:?.Was ist GCC __attribute __ ((Modus (XX)) tatsächlich tun
typedef unsigned int dword_t __attribute__((mode(DI)));
auf 32-Bit-Systemen und
typedef unsigned int dword_t __attribute__((mode(TI)));
auf 64-Bit-Systemen.
I gegeben assume ist dies eine Erweiterung der C-Sprache, dass es keine Möglichkeit gibt zu erreichen, was es erreicht in aktuellen (C99) Standards.
Also meine Fragen sind einfach: Ist diese Annahme richtig? Und was tun diese Aussagen mit dem zugrunde liegenden Speicher? Ich denke, das Ergebnis ist, habe ich 2*sizeof(uint32_t)
für eine dword
in 32-Bit-Systemen und 2*sizeof(uint64_t)
für 64-Bit-Systeme, bin ich richtig?
Genau das, was ich brauche, +1. Gibt es keinen "normalen" Weg, um das zu umgehen, nehme ich es an? d. h. deklarieren Sie einen 128-Bit-Typ? In seiner aktuellen Verwendung können wir sicher und einfach 'word = word << 1 'schreiben; Ich würde das lieber nicht durch eine Funktion etc ersetzen, wenn ich es helfen könnte. –
@Ninefingers: In GCC können Sie '__int128' Ich glaube: http://gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html. –
@Ninefingers: GCC unterstützt die Erweiterungstypen '__int128_t' und' __uint128_t' (zumindest auf 64-Bit-Plattformen nicht sicher 32-Bit-Ziele) –