情景
最近碰到了这个问题,研究一下发现很有趣,如何用C++代码稳定判断64位还是32位系统? 看到这个问题有人可能会想,用64位或者32位系统字节数不一样的基本类型来判断不可以吗?答案是YES。很多人会想到long/unsigned long,其实这个是有问题的,无法做到稳定判断。windows的vs下万古不变4个字节,其他平台可能就是4/8字节(32/64位系统)。如何做到稳定判断?其实用指针计算是最好的,这里会用到二级指针,可以看看下面这个例子:
{
//简单小例子判断是64位系统还是32位
char* test = nullptr;
char* start = (char*)&test;
char* end = (char*)(&test + 1);
//..
if ( 4 == (end - start))
{
cout << "32位" << endl;
}
if ( 8 == (end - start))
{
cout << "64位" << endl;
}
}