在当今的跨平台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位。是的,人们确实在微控制器上编写软件。我认为随着iPhone和Android设备的兴起,更多的人在微控制器上编写的软件比PC上的用户更多,更不用说Arduino等的兴起了。– slebetman
int
仍然只有16位。我不想这么说,但是如果您要写有关“当今的跨平台世界”的文章,您将不能忽略整个印度次大陆。