如果处理器类型是Cocoa中的PPC或Intel,最好的方法是什么? (我必须使用碳?)

StackOverflow https://stackoverflow.com/questions/1619561

我需要将它作为字符串在程序中的其他位置使用,我不担心编译器设置。

我在CocoaDev上找到了 HowToGetHardwareAndNetworkInfo ,但是当我所有的时候它似乎有点紧张我想知道的是PPC与英特尔。

有帮助吗?

解决方案

如果您的应用程序是胖的(即不在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>函数。

其他提示

uname怎么样?

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

将根据机器打印,如PPC或i386或x86_64。

你真正关心的那个烂摊子的唯一部分就在这里:

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

请参阅Kernel.framework中的Mach头以获取结构和常量定义。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top