7

如何检查我的应用程序是用 32 位还是 64 位编译的?

这有助于调试低级代码(例如使用缓冲区)。

4

3 回答 3

19

编译时检查将涉及#ifdef'ing for __LP64__,这是 ARM 的数据类型大小标准。运行时解决方案将涉及检查指针的大小,如下所示:

if (sizeof(void*) == 4) {
    // Executing in a 32-bit environment
} else if (sizeof(void*) == 8) {
   // Executing in a 64-bit environment
}

值得庆幸的是,指针大小是编译 64 位代码的不同标准似乎一致同意的一件事。

于 2013-09-27T06:25:07.100 回答
16
#ifdef __LP64__
    NSLog(@"64-bit\t");
#else
    NSLog(@"32-bit\t");
#endif
于 2013-09-27T06:24:33.157 回答
2

您可以检查指针的大小。我认为在 32 位上它是 4 字节,而在 64 上它应该是 8。

if( sizeof(void*) == 4 ) then 32bit else 64bit
于 2013-09-27T06:22:44.650 回答