++ (veya C) dünya bugünün çapraz platform C biz var :
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
...
Bugün bunun anlamı, herhangi bir "ortak" (işaretli) tamsayı için int
yeterli olacaktır ve muhtemelen C ++ uygulama kodunu yazarken varsayılan tamsayı türü olarak kullanılabilir. Aynı zamanda - mevcut pratik amaçlar için - platformlar arasında tutarlı bir boyuta sahip olacaktır.
Bir kullanım durumu en az 64 bit gerektiriyorsa, bugün kullanabiliriz long long
, ancak muhtemelen bitlik belirleyici türlerden birini kullanmak veya __int64
tür daha anlamlı olabilir.
Bu long
ortada kalıyor ve long
uygulama kodumuzun kullanımının tamamen yasaklandığını düşünüyoruz .
Bu mantıklılong
mıdır, yoksa çapraz platform çalışması gereken modern C ++ (veya C) kodunda kullanmak için bir durum var mı? (platform masaüstü, mobil cihazlar olmakla birlikte, mikrodenetleyiciler, DSP'ler vb. gibi şeyler değildir)
Muhtemelen ilginç arka plan bağlantıları:
- C ++ standardı int, long tipinin boyutunu belirtir mi?
- Win64 ekibi neden LLP64 modelini seçti?
- 64 Bit Programlama Modelleri: Neden LP64? (biraz yaşlı)
- Is
long
en az 32 bit olması garanti? (Bu, aşağıdaki yorum tartışmasını ele almaktadır. Cevap .)
long
32 bit garanti etmenin tek yolu budur. int
16 bit olabilir, bu yüzden bazı uygulamalar için yeterli değil. Evet, int
modern derleyicilerde bazen 16 bit var. Evet, insanlar mikrodenetleyiciler üzerinde yazılım yazarlar. Daha fazla insanın Arduinos vb yükselişini saymıyorum iPhone ve Android cihazların yükselişi ile PC'de daha mikro denetleyici üzerindeki fazla kullanıcıya sahip yazılım yazmak iddia ediyorum
int
Hala 16 bit olan DOSBox / Turbo C ++ dünyasını kaçırıyorsunuz . Söylemekten nefret ediyorum, ancak “bugünün platformlar arası dünyası” hakkında yazacaksanız, tüm Hindistan alt kıtasını görmezden gelemezsiniz.