1

我需要把它作为一个字符串在程序的其他地方使用,我不担心编译器设置。

我在CocoaDev上找到了 HowToGetHardwareAndNetworkInfo,但当我只想知道 PPC 与 Intel 时,它似乎有点紧张。

4

3 回答 3

6

如果您的应用程序构建得很胖(即不在 intel 的 Rosetta 下运行),您不需要进行任何调用来获取此信息,因为将运行不同的代码,具体取决于您使用的架构。因此,信息在编译时可用:

#if defined __i386__ || defined __x86_64__
NSString *processorType = @"Intel";
#elif defined __ppc__ || defined __ppc64__
NSString *processorType = @"PPC";
#elif defined __arm__
NSString *processorType = @"ARM";
#else
NSString *processorType = @"Unknown Architecture";
#endif

如果您出于某些不正当的原因确实想在运行时进行确定,您应该能够使用sysctlbyname定义在<sys/sysctl.h>.

于 2009-10-25T00:22:50.470 回答
4

怎么样uname

struct utsname uts;
uname(&uts);
printf("%s\n", uts.machine);

根据机器的不同,会像 PPC 或 i386 或 x86_64 一样打印。

于 2009-10-25T02:13:34.533 回答
0

你真正关心的唯一部分是这里:

host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)&hostInfo, &infoCount);

有关结构和常量定义,请参阅 Kernel.framework 中的 Mach 标头。

于 2009-10-25T01:53:04.620 回答