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, intakan 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 __int64jenis mungkin lebih masuk akal.
Ini terletak longdi tengah, dan kami sedang mempertimbangkan untuk langsung melarang penggunaan dari longkode aplikasi kami .
Apakah ini masuk akal , atau adakah kasus untuk menggunakan longkode 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
longdijamin setidaknya 32 bit? (Ini membahas diskusi komentar di bawah ini. Jawab .)
longadalah satu-satunya cara untuk menjamin 32 bit. intbisa 16 bit jadi untuk beberapa aplikasi itu tidak cukup. Ya, intkadang-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.
intmasih 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.