गैर-8-बिट चार्ट वाले प्लेटफार्मों को देने के लिए किस प्रकार का विचार है?
जादू की संख्याएँ घटित होती हैं जैसे कि स्थानांतरण;
इनमें से अधिकांश को 8 और 255 (या समान) के बजाय CHAR_BIT और उदा UCHAR_MAX का उपयोग करके बहुत आसानी से नियंत्रित किया जा सकता है।
उम्मीद है कि आपका कार्यान्वयन उन को परिभाषित करता है :)
उन "आम" मुद्दे हैं .....
एक और अप्रत्यक्ष मुद्दा यह है कि आपके पास है:
struct xyz {
uchar baz;
uchar blah;
uchar buzz;
}
यह एक मंच पर "केवल" ले (सबसे अच्छा मामला) 24 बिट्स हो सकता है, लेकिन कहीं और 72 बिट्स ले सकता है .....
यदि प्रत्येक uchar में "बिट फ़्लैग" होते हैं और प्रत्येक uchar में केवल 2 "महत्वपूर्ण" बिट्स या फ़्लैग होते हैं जिन्हें आप वर्तमान में उपयोग कर रहे थे, और आपने उन्हें केवल "स्पष्टता" के लिए 3 uchar में व्यवस्थित किया, तो यह अपेक्षाकृत अधिक "बेकार" हो सकता है जैसे कि " 24-बिट uchars के साथ एक मंच .....
कुछ भी नहीं हल कर सकते हैं, लेकिन वे अन्य चीजों के लिए बाहर देखने के लिए है ...।
इस मामले में, केवल एक एनम "सबसे छोटा" आकार पूर्णांक प्राप्त करने का एक तरीका हो सकता है जिसकी आपको वास्तव में आवश्यकता है ...।
शायद एक वास्तविक उदाहरण नहीं है, लेकिन कुछ कोड के साथ पोर्टिंग / प्ले करते समय मुझे इस "बिट" की तरह सामान .....
बस इस तथ्य से कि अगर एक uchar तीन बार उतना बड़ा हो जो "सामान्य रूप से" अपेक्षित हो, तो 100 ऐसी संरचनाएं कुछ प्लेटफार्मों पर बहुत सारी मेमोरी बर्बाद कर सकती हैं ..... जहां "सामान्य रूप से" यह एक बड़ी बात नहीं है ...। ।
इसलिए चीजें अभी भी "टूटी हुई" हो सकती हैं या इस मामले में "बहुत स्मृति को बहुत जल्दी बर्बाद कर देती है" एक धारणा के कारण कि एक मंच पर एक uchar "बहुत बेकार नहीं" है, रैम के सापेक्ष उपलब्ध है, दूसरे मंच की तुलना में ... ..
समस्या अधिक प्रमुख हो सकती है जैसे कि ints के लिए, या अन्य प्रकार, जैसे कि आपके पास कुछ संरचना है, जिसमें 15 बिट्स की आवश्यकता होती है, इसलिए आप इसे इंट में चिपकाते हैं, लेकिन किसी अन्य प्लेटफॉर्म पर एक इंट 48 बिट्स या जो भी हो ...। ।
"सामान्य रूप से" आप इसे 2 uchars में तोड़ सकते हैं, लेकिन उदाहरण के लिए एक 24-बिट uchar के साथ आपको केवल एक की आवश्यकता होगी .....
तो एक एनम एक बेहतर "सामान्य" समाधान हो सकता है ...।
हालांकि आप उन बिट्स तक कैसे पहुंच रहे हैं, इस पर निर्भर करता है :)
इसलिए, "डिज़ाइन दोष" हो सकते हैं जो उनके सिर को पीछे करते हैं .... भले ही कोड अभी भी काम कर सकता है / एक uchar या uint के आकार की परवाह किए बिना ठीक चल सकता है ...
देखने के लिए इस तरह की चीजें हैं, भले ही आपके कोड में "मैजिक नंबर" न हों ...
आशा है कि यह समझ में आता है :)