代码之家  ›  专栏  ›  技术社区  ›  zekel lepture

找出处理器类型是ppc还是cocoa中的intel的最佳方法是什么?(我必须使用碳吗?)

  •  1
  • zekel lepture  · 技术社区  · 15 年前

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

    我发现 HowToGetHardwareAndNetworkInfo 但当我只想知道PPC和英特尔之间的较量时,似乎有点紧张。

    3 回复  |  直到 15 年前
        1
  •  6
  •   Stephen Canon    15 年前

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

        2
  •  4
  •   Dave DeLong    15 年前

    怎么样 uname ?

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

    将像ppc或i386或x86_一样打印,具体取决于机器。

        3
  •  0
  •   Azeem.Butt    15 年前

    你唯一关心的就是这里:

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

    有关结构和常量定义,请参见kernel.framework中的mach headers。