Qual è il modo migliore per scoprire se il tipo di processore è PPC o Intel in Cocoa? (Devo usare Carbon?)
-
06-07-2019 - |
Domanda
Devo ottenerlo come stringa da utilizzare altrove nel programma, non sono preoccupato per le impostazioni del compilatore.
Ho trovato HowToGetHardwareAndNetworkInfo su CocoaDev, ma mi è sembrato un po 'intenso quando tutto volevo sapere è PPC vs. Intel.
Soluzione
Se la tua applicazione è costruita in modo grasso (cioè non è in esecuzione su rosetta su Intel), non è necessario effettuare chiamate per ottenere queste informazioni, perché verrà eseguito un codice diverso, a seconda dell'architettura sei su . Pertanto, le informazioni sono disponibili al momento della compilazione:
#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
Se vuoi davvero fare la determinazione in fase di esecuzione per qualche motivo perverso, dovresti essere in grado di usare la funzione sysctlbyname
, definita in <sys/sysctl.h>
.
Altri suggerimenti
Che ne dici di uname
?
struct utsname uts;
uname(&uts);
printf("%s\n", uts.machine);
Stampa come PPC o i386 o x86_64 a seconda della macchina.
L'unica parte di quel casino a cui tieni veramente è qui:
host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)&hostInfo, &infoCount);
Vedi le intestazioni Mach in Kernel.framework per definizioni strutt e costanti.