c++ 判断32位/64位机器

  某些人会考虑用long类型的长度来作为判断的标准,这样不是一个好的答案。我认为比较好的答案是利用虚拟地址的位数

1 int main()
2 {
3 
4 #ifdef __x86_64__
5     assert(sizeof(char *) == 8);
6 #endif
7     return 0;
8 }

然后见到别人提了一个这样的问题:如果是64位的机器装了32位的系统,你怎么判断呢?

A:

1. 直接读取/proc/cpuinfo

2. 更底层点的做法:使用汇编指令cpuid