In der heutigen plattformübergreifende C ++ (oder C) Welt , die wir haben :
Data model | short | int | long | long long | pointers/size_t | Sample operating systems
...
LLP64/IL32P64 16 32 32 64 64 Microsoft Windows (x86-64 and IA-64)
LP64/I32LP64 16 32 64 64 64 Most Unix and Unix-like systems, e.g. Solaris, Linux, BSD, and OS X; z/OS
...
Was dies heute bedeutet, ist, dass für jede "gemeinsame" (vorzeichenbehaftete) Ganzzahl intausreicht und möglicherweise beim Schreiben von C ++ - Anwendungscode immer noch als ganzzahliger Standardtyp verwendet werden kann. Aus praktischen Gründen wird es auch eine einheitliche Größe für alle Plattformen haben.
Wenn ein Anwendungsfall mindestens 64 Bit erfordert, können wir ihn heute verwenden long long, obwohl die Verwendung eines der bitnessspezifizierenden Typen oder des __int64Typs möglicherweise sinnvoller ist.
Dies bleibt longin der Mitte, und wir erwägen, die Verwendung von longCode aus unserem Anwendungscode endgültig zu verbieten .
Wäre dies sinnvoll , oder gibt es einen Grund für die Verwendung longin modernem C ++ - (oder C-) Code, der plattformübergreifend ausgeführt werden muss? (Plattform ist Desktop, mobile Geräte, aber keine Dinge wie Mikrocontroller, DSPs usw.)
Möglicherweise interessante Hintergrundlinks:
- Wie lautet der C ++ - Standard, dessen Größe int, long sein soll?
- Warum hat sich das Win64-Team für das LLP64-Modell entschieden?
- 64-Bit-Programmiermodelle: Warum LP64? (etwas gealtert)
- Ist
longgarantiert mindestens 32 Bits sein? (Hiermit wird die Kommentardiskussion unten angesprochen. Antwort .)
longNur so können 32 Bit garantiert werden. intkann 16 Bit sein, für einige Anwendungen ist dies nicht ausreichend. Ja, intist manchmal 16 Bit auf modernen Compilern. Ja, Menschen schreiben Software auf Mikrocontrollern. Ich würde behaupten, dass mehr Leute Software schreiben, die mehr Benutzer auf Mikrocontrollern als auf PCs hat, mit dem Aufstieg von iPhone- und Android-Geräten, ganz zu schweigen vom Aufstieg von Arduinos usw.
intes immer noch 16 Bit gibt. Ich hasse es, es zu sagen, aber wenn Sie über die "heutige plattformübergreifende Welt" schreiben, können Sie den gesamten indischen Subkontinent nicht ignorieren.