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 int
ausreicht 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 __int64
Typs möglicherweise sinnvoller ist.
Dies bleibt long
in der Mitte, und wir erwägen, die Verwendung von long
Code aus unserem Anwendungscode endgültig zu verbieten .
Wäre dies sinnvoll , oder gibt es einen Grund für die Verwendung long
in 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
long
garantiert mindestens 32 Bits sein? (Hiermit wird die Kommentardiskussion unten angesprochen. Antwort .)
long
Nur so können 32 Bit garantiert werden. int
kann 16 Bit sein, für einige Anwendungen ist dies nicht ausreichend. Ja, int
ist 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.
int
es 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.