मैंने कई अलग-अलग एम्बेडेड सिस्टम पर काम किया है। UINT32
जैसे प्रकारों के लिए उनके पास सभी typedef
s (या #defines
) का उपयोग किया गया है।
यह एक अच्छी तकनीक है क्योंकि यह प्रोग्रामर को प्रकार के आकार को घर चलाती है और आपको ओवरफ्लो इत्यादि के अवसरों के बारे में अधिक जागरूक बनाती है।
लेकिन कुछ प्रणालियों पर आप जानते हैं कि संकलक और प्रोसेसर परियोजना के जीवन के लिए नहीं बदलेगा।
तो परियोजना-विशिष्ट प्रकारों को बनाने और लागू करने के आपके निर्णय को क्या प्रभावित करना चाहिए?
संपादित करें
मुझे लगता है कि मैं अपने प्रश्न का सारांश खोने में कामयाब रहा, और शायद यह वास्तव में दो है।
एम्बेडेड प्रोग्रामिंग के साथ आपको इंटरफेस के लिए विशिष्ट आकार के प्रकार और रैम जैसे प्रतिबंधित संसाधनों का सामना करने की आवश्यकता हो सकती है। इससे बचा नहीं जा सकता है, लेकिन आप कंपाइलर से मूल प्रकार का उपयोग करना चुन सकते हैं।
बाकी सब कुछ के लिए प्रकार कम महत्व है।
आपको सावधान रहने की आवश्यकता नहीं है कि अतिप्रवाह न हो और पंजीकरण और ढेर के उपयोग के लिए बाहर निकलने की आवश्यकता हो। जो आपको UINT16
, UCHAR
पर ले जा सकता है।
UCHAR
जैसे प्रकारों का उपयोग हालांकि कंपाइलर 'fluff' जोड़ सकते हैं। चूंकि पंजीयक आमतौर पर बड़े होते हैं, इसलिए कुछ कंपाइलर परिणाम को बल में बल देने के लिए कोड जोड़ सकते हैं।
i++;
can become
ADD REG,1
AND REG, 0xFF
which is unecessary.
तो मुझे लगता है कि मेरा सवाल होना चाहिए था: -
एम्बेडेड सॉफ़्टवेयर की बाधाओं को देखते हुए एक परियोजना के लिए सेट करने की सबसे अच्छी नीति क्या है जिसमें बहुत से लोग इस पर काम करेंगे - जिनमें से सभी अनुभव के समान स्तर के नहीं होंगे।