Qual è il modo migliore per scoprire se il tipo di processore è PPC o Intel in Cocoa? (Devo usare Carbon?)

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

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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top