Mat*_*ner 8 c architecture history platform word-size
在80年代从16位转换到32位期间,int
是16位或32位.使用当前的64位转换命名法,我知道ILP32和LP32机器的传播非常均匀.当时我相信它被理解为int
总是遵循任何给定架构的寄存器或指针宽度,并且long
将保持32位.
快进25年,我发现LP64是相当主流的,但直到我遇到64位平台[我在2007年发现桌面Linux :)],我总是期望IP64成为下一个合乎逻辑的步骤.
char <= short <= int <= long
关系如何适应这种将整数类型固定到我们留下的每个平台的新方案?{l,u}case
)WORD
/ DWORD
在各种平台上使用相关?INT
16位的表单.Windows会不会发展成LLP64还是为时已晚?int
选择这次被抛弃,而不是在32位过渡期间?我怎么看,Windows在整个x64过渡中都是一个古怪的东西.但抛开这一点,C或C++从未将整数类型定义为固定长度.我发现整个int/long/pointer事情是可以理解的,如果你这样看:
int:大多数32位长(Linux,Mac和Windows)长:Mac和Linux上64位,Windows上32位长:Mac,Linux和Windows x64上的64位(u)intptr_t:指针的确切长度(32位)在32位,64位64位系统上)
我只在字符串的上下文中使用char而从不使用short,因为它与大多数桌面系统上的int一样长.
WORD和DWORD很难看,应该避免.如果API强制您使用它们,请在处理时将DWORD替换为DWORD_PTR ......好吧,指针.在恕我直言,首先使用(D)WORD是绝对正确的.
我认为Windows永远不会改变它的决定.太麻烦了
为什么留下了int?为什么金星向相反的方向旋转?第一个问题的答案在这里找到(我相信),第二个问题有点复杂;)