Come posso verificare se la mia app è compilata a 32-bit o 64-bit?Verifica se l'app è costruita a 32 o 64 bit?
Questo è utile per eseguire il debug del codice di livello basso (ad esempio con i buffer).
Come posso verificare se la mia app è compilata a 32-bit o 64-bit?Verifica se l'app è costruita a 32 o 64 bit?
Questo è utile per eseguire il debug del codice di livello basso (ad esempio con i buffer).
È possibile verificare la dimensione di un puntatore. Credo su 32 bit è 4bytes e 64 Occorre 8.
if(sizeof(void*) == 4) then 32bit else 64bit
int rimane 4 byte in 64 bit. –
oh questo è triste, si potrebbe provare sizeof (void) – rcpfuchs
'sizeof (void *)' –
#ifdef __LP64__
NSLog(@"64-bit\t");
#else
NSLog(@"32-bit\t");
#endif
Questo tempo di compilazione. La domanda è per runtime. –
controllo del tempo di compilazione comporterebbe #ifdef
'zione per __LP64__
, che è formato standard tipo di dati di ARM. Una soluzione runtime comporterebbe controllando la dimensione dei puntatori, in questo modo:
if (sizeof(void*) == 4) {
// Executing in a 32-bit environment
} else if (sizeof(void*) == 8) {
// Executing in a 64-bit environment
}
Per fortuna, le dimensioni del puntatore sono l'unica cosa che i diversi standard per la compilazione di codice a 64 bit sembrano concordare.
Solo per FYI, entrambe le soluzioni '__LP64__' e' sizeof() 'sono in fase di compilazione. La valutazione di sizeof fa parte del processo di compilazione e non una funzione. Il compilatore sostituisce sostanzialmente sizeof (tipo) con la dimensione di quel tipo sul sistema che stai compilando. Idealmente, il #ifdef e if/else finiranno per compilarlo in modo identico perché il compilatore vedrà che 8 è sempre == 8 e ottimizza il ramo 8 == 4. – ultramiraculous
Tecnicamente, sei corretto (ma il tuo argomento è basato sull'assunzione del compilatore di ottimizzazione). Forse [questo] (http://stackoverflow.com/a/7984249/945847) si adatterebbe con una definizione più rigorosa di "controllo di runtime". – CodaFi
Perché hai bisogno di sapere? Il codice scritto correttamente dovrebbe funzionare in entrambi i modi. – dpassage
Sono d'accordo con @dpassage. Anche se è necessario sapere controllare il modello del dispositivo. https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/model – Desdenova
@dpassage Commento molto ingenuo. È vero per le cose semplici, ma sicuramente no, quando si desidera ottimizzare il codice per diverse architetture della CPU. –