2013-09-27 4 views
7

मैं कैसे जांच सकता हूं कि मेरा ऐप 32-बिट या 64-बिट में संकलित है या नहीं?जांचें कि ऐप 32 या 64-बिट में बनाया गया है या नहीं?

यह निम्न स्तर कोड (उदाहरण के लिए बफर के साथ काम करना) को डीबग करने में मददगार है।

+3

आपको क्यों जानने की आवश्यकता है? उचित लिखित कोड को किसी भी तरह से ठीक काम करना चाहिए। – dpassage

+0

मैं @dpassage से सहमत हूं। यद्यपि आपको डिवाइस मॉडल की जांच करने की आवश्यकता है। https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/model – Desdenova

+0

@dpassage बहुत बेवकूफ टिप्पणी। सरल चीजों के लिए सच है, लेकिन निश्चित रूप से नहीं, जब आप विभिन्न कोड आर्किटेक्चर के लिए अपना कोड अनुकूलित करना चाहते हैं। –

उत्तर

2

आप एक सूचक का आकार देख सकते हैं। मैं 32 बिट पर लगता है कि यह 4bytes है और 64 पर यह होना चाहिए 8.

if(sizeof(void*) == 4) then 32bit else 64bit 
+2

int 64 बिट में 4 बाइट बना रहता है। –

+0

ओह दुखद है, कोई आकार (void) – rcpfuchs

+1

'आकार (शून्य *) ' –

16
#ifdef __LP64__ 
    NSLog(@"64-bit\t"); 
#else 
    NSLog(@"32-bit\t"); 
#endif 
+3

यह संकलन समय। प्रश्न रनटाइम के लिए है। –

18

एक संकलन समय जांच __LP64__ के लिए ing, जो एआरएम के डेटा प्रकार आकार मानक है #ifdef शामिल होगा '। एक क्रम समाधान संकेत के आकार की जाँच, इसलिए की तरह शामिल होगा: 64-बिट कोड संकलन के लिए विभिन्न मानकों पर सहमत करने लगते हैं

if (sizeof(void*) == 4) { 
    // Executing in a 32-bit environment 
} else if (sizeof(void*) == 8) { 
    // Executing in a 64-bit environment 
} 

शुक्र है, सूचक आकार एक बात कर रहे हैं।

+5

बस एफवाईआई, '__LP64__' और 'sizeof()' समाधान दोनों संकलित-समय हैं। आकार का मूल्यांकन संकलन प्रक्रिया का हिस्सा है, न कि एक समारोह। संकलक मूल रूप से उस प्रकार के आकार के साथ आकार (प्रकार) को प्रतिस्थापित करता है जिस पर आप संकलित कर रहे हैं। आदर्श रूप में, #ifdef और if/else समान रूप से संकलित हो जाएंगे क्योंकि संकलक देखेंगे कि 8 हमेशा == 8 है और 8 == 4 शाखा को अनुकूलित करता है। – ultramiraculous

+0

तकनीकी रूप से, आप सही हैं (लेकिन आपका तर्क ऑप्टिमाइज़िंग कंपाइलर की धारणा पर स्थापित किया गया है)। शायद [यह] (http://stackoverflow.com/a/7984249/945847) "रनटाइम चेक" की एक और कठोर परिभाषा फिट करेगा। – CodaFi

संबंधित मुद्दे