【发布时间】:2015-02-16 03:50:21
【问题描述】:
if(sizeof(pointer) == 4) /* 4*8 = 32 bits */
printf("32 bit machine");
if(sizeof(pointer) == 8) /* 8*8 = 64 bits */
printf("64 bit machine");
这是否在任何平台上得到确认? 我的意思是我们可以依靠上述检查来确定它是哪种机器类型吗?
既然指针基本上是用来在 32 位机器中存储内存位置的,它应该是 4 个字节,而 64 位机器应该是 8 个字节?
sizeof(pointer) < 4 是否有可能在 32 位机器上。(1 个字是 32 位架构)
【问题讨论】:
-
指针的大小在 64 位机器上应该是 64 位,我不确定
int的大小。 -
@PaulGriffiths 不,这不是我想要的我的意思是我可以依靠上述条件吗?没有其他方法可以检查我的机器
-
@Gopi:链接问题的答案就在其中。像“32 位机器”和“64 位机器”这样的术语一开始就定义不明确,因此“任何平台”的答案都无法脱颖而出。
-
此外,寻找一种完全可移植的方法来检测一些定义不明确的机器特征看起来有点像XY problem。在第一种情况下,您最好编写可在任何平台上运行的标准程序。其次,您最好关注您感兴趣的具体差异(例如
long的大小,您可以轻松获得),而不是假设“64 位机器”可能意味着什么。跨度> -
@Maroun Maroun 有没有人放弃 int 字?^^
标签: c