Dalam dunia lintas-platform C ++ (atau C) hari ini kami memiliki :
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
...
Apa artinya ini hari ini, adalah untuk integer "umum" (ditandatangani) apa saja, int
akan cukup dan mungkin masih dapat digunakan sebagai tipe integer default saat menulis kode aplikasi C ++. Ini juga akan - untuk tujuan praktis saat ini - memiliki ukuran yang konsisten di seluruh platform.
Jika kasus penggunaan memerlukan setidaknya 64 bit, kita dapat menggunakan hari ini long long
, meskipun mungkin menggunakan salah satu dari jenis -bitness-menentukan atau __int64
jenis mungkin lebih masuk akal.
Ini terletak long
di tengah, dan kami sedang mempertimbangkan untuk langsung melarang penggunaan dari long
kode aplikasi kami .
Apakah ini masuk akal , atau adakah kasus untuk menggunakan long
kode C ++ (atau C) modern yang harus menjalankan cross platform? (platform menjadi desktop, perangkat seluler, tetapi bukan hal-hal seperti mikrokontroler, DSP, dll.)
Tautan latar belakang yang mungkin menarik:
- Apa standar C ++ yang menyatakan ukuran int, tipe panjang menjadi?
- Mengapa tim Win64 memilih model LLP64?
- Model Pemrograman 64-Bit: Mengapa LP64? (agak tua)
- Apakah
long
dijamin setidaknya 32 bit? (Ini membahas diskusi komentar di bawah ini. Jawab .)
long
adalah satu-satunya cara untuk menjamin 32 bit. int
bisa 16 bit jadi untuk beberapa aplikasi itu tidak cukup. Ya, int
kadang-kadang 16 bit pada kompiler modern. Ya, orang memang menulis perangkat lunak pada mikrokontroler. Saya berpendapat lebih banyak orang menulis perangkat lunak yang memiliki lebih banyak pengguna pada mikrokontroler daripada pada PC dengan kebangkitan iPhone dan perangkat Android belum lagi munculnya Arduinos dll.
int
masih sangat banyak 16 bit. Saya benci mengatakannya, tetapi jika Anda akan menulis tentang "dunia lintas platform saat ini", Anda tidak dapat mengabaikan seluruh anak benua India.