如果处理器类型是Cocoa中的PPC或Intel,最好的方法是什么? (我必须使用碳?)
-
06-07-2019 - |
题
我需要将它作为字符串在程序中的其他位置使用,我不担心编译器设置。
我在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头以获取结构和常量定义。
不隶属于 StackOverflow