Какой лучший способ найти тип процессора - PPC или Intel в Какао?(Должен ли я использовать углерод?) - PullRequest
1 голос
/ 25 октября 2009

Мне нужно получить его как строку для использования в другом месте программы, я не беспокоюсь о настройках компилятора.

Я нашел HowToGetHardwareAndNetworkInfo на CocoaDev, но мне показалось немного напряженным, когда все, что я хотел знать, это PPC против Intel.

Ответы [ 3 ]

6 голосов
/ 25 октября 2009

Если ваше приложение полноформатно (т.е. не работает под Rosetta на Intel), вам не нужно делать какие-либо вызовы, чтобы получить эту информацию, потому что будет работать другой код, в зависимости от архитектуры, которую вы используете Вы на . Таким образом, информация доступна во время компиляции:

#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>.

4 голосов
/ 25 октября 2009

Как насчет uname?

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

Будет печататься как PPC или i386 или x86_64 в зависимости от аппарата.

0 голосов
/ 25 октября 2009

Единственная часть этого беспорядка, которая вас действительно волнует, находится здесь:

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

См. Заголовки Mach в Kernel.framework для определения структуры и констант.

...