У сучасному кросплатформенному світі C ++ (або C) ми маємо :
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
...
Сьогодні це означає, що будь-яке "загальне" (підписане) ціле число intбуде достатньо і, можливо, все ще може використовуватися як цілий тип за замовчуванням при написанні коду програми C ++. Він також буде - для сучасних практичних цілей - мати постійний розмір на різних платформах.
Якщо для випадку використання потрібні щонайменше 64 біти, ми можемо сьогодні використовувати long long, хоча можливо, використовуючи один із типів біт -типу або __int64тип може мати більше сенсу.
Це залишається longв середині, і ми розглядаємо можливість прямо заборонити використання longнашого коду програми .
Чи має це сенс , чи є випадок використання longв сучасному коді C ++ (або C), який повинен запускати крос-платформу? (платформа - це настільні, мобільні пристрої, але не такі речі, як мікроконтролери, DSP тощо)
Можливо цікаві фонові посилання:
- Який стандарт C ++ визначає розмір int, довгий тип якого має бути?
- Чому команда Win64 обрала модель LLP64?
- 64-бітні моделі програмування: чому LP64? (кілька років)
- Є чи
longгарантовано бути принаймні 32 біта? (Це стосується обговорення коментарів нижче. Відповідь .)
longце єдиний спосіб гарантувати 32 біти. intможе бути 16 біт, тому для деяких застосувань цього недостатньо. Так, intіноді буває 16 біт на сучасних компіляторах. Так, люди пишуть програмне забезпечення на мікроконтролери. Я б заперечував, що більше людей пише програмне забезпечення, яке має більше користувачів на мікроконтролерах, ніж на ПК із зростанням пристроїв iPhone і Android, не кажучи вже про підйом Arduinos тощо.
intще дуже багато 16 біт. Я ненавиджу це говорити, але якщо ти збираєшся писати про "сьогоднішній міжплатформенний світ", ти не можеш ігнорувати весь індійський субконтинент.