C 能保证sizeof(long) == sizeof(void*)吗?如果不是,为什么它在 Linux 内核源代码中使用得如此广泛?
我看了sizeof(int)==sizeof(void*)?但那是关于sizeof(int)vs 的sizeof(void *)。
Jon*_*ler 10
不,C 标准不保证sizeof(long) == sizeof(void *).
实际上,在 Windows 64 位系统上,值为4forsizeof(long)和8for sizeof(void *)。此设计符合 C 标准。另请参阅64 位 Windows 上的位大小是long多少?
那些实现 Linux 内核的人大概已经决定,他们永远不会将代码移植到遵循 Windows 64 位 LLP64(long long指针是 64 位数量)系统的系统,因此他们不需要担心尺寸不同。32 位系统 (ILP32) 和 64 位系统 (LP64)都具有sizeof(long) == sizeof(void *). 但是 C 标准不保证它。
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |