오늘날의 크로스 플랫폼 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, long 유형의 크기를 무엇이라고 말합니까?
- Win64 팀이 LLP64 모델을 선택한 이유는 무엇입니까?
- 64 비트 프로그래밍 모델 : 왜 LP64인가? (어떤 나이 든)
- 되어
long
최소한 32 비트 보장? (이것은 아래의 의견 토론을 다룹니다. 답변 .)
long
32 비트를 보장하는 유일한 방법입니다. int
16 비트가 될 수 있으므로 일부 응용 프로그램에서는 충분하지 않습니다. 예, int
최신 컴파일러에서는 때때로 16 비트입니다. 예, 사람들은 마이크로 컨트롤러에서 소프트웨어를 작성합니다. 나는 Arduinos 등의 상승을 언급하지 않고 iPhone 및 Android 기기의 등장으로 PC보다 마이크로 컨트롤러에 더 많은 사용자가있는 소프트웨어를 작성하는 사람들이 더 많다고 주장합니다.
int
여전히 16 비트 인 DOSBox / Turbo C ++ 환경이 없습니다 . 나는 그것을 말하기 싫지만, "오늘날의 크로스 플랫폼 세계"에 대해 글을 쓰려고한다면 인도 대륙 전체를 무시할 수는 없습니다.