C是否保证sizeof(long) == sizeof(void*)
?如果不是,为什么它在 Linux 内核源代码中如此广泛地使用?
我在看sizeof(int) == sizeof(void*)?但这谈论的是sizeof(int)
vs sizeof(void *)
.
不,C 标准不保证sizeof(long) == sizeof(void *)
.
实际上,在 Windows 64 位系统上,这些值是4
for sizeof(long)
and 8
for sizeof(void *)
。本设计符合C标准。也可以看看位大小是多少long在 64 位 Windows 上?
那些实现 Linux 内核的人可能已经决定,他们永远不会将代码移植到遵循 Windows 64 位 LLP64 的系统(long long
并且指针是64位量)系统,因此不需要关心大小是否不同。 32 位系统 (ILP32) 和 64 位系统 (LP64)do have sizeof(long) == sizeof(void *)
。但C标准并不能保证这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)