C ++ अधिक है कि एक प्रोग्रामिंग भाषा:
a) यह "बेहतर" C b है) यह एक वस्तु उन्मुख भाषा है c) यह एक ऐसी भाषा है जो हमें जेनेरिक प्रोग्राम लिखने की अनुमति देती है
हालाँकि इन सभी विशेषताओं का उपयोग अलग-अलग किया जा सकता है, लेकिन जब इन तीनों का एक ही समय में उपयोग किया जाता है तो सर्वोत्तम परिणाम प्राप्त होते हैं। फिर भी, यदि आप उनमें से सिर्फ एक को चुनना चुनते हैं तो एम्बेडेड सॉफ़्टवेयर की गुणवत्ता बढ़ जाएगी।
a) यह "बेहतर" C है
सी ++ एक मजबूत टाइप की गई भाषा है; C. से अधिक मजबूत। आपके कार्यक्रम इस सुविधा से लाभान्वित होंगे।
कुछ लोग पॉइंटर्स से डरते हैं। C ++ में संदर्भ शामिल हैं। अतिभारित कार्य।
और कहने लायक: बड़े या धीमे कार्यक्रमों में इनमें से कोई भी विशेषता नहीं है।
b) यह एक वस्तु उन्मुख भाषा है
इस पोस्ट में किसी ने कहा कि माइक्रोकंट्रोलर में मशीन को अमूर्त करना एक अच्छा विचार नहीं है। गलत! हम सभी, एम्बेडेड इंजीनियरों ने हमेशा मशीन को अमूर्त किया है, बस अन्य सिंटैक्स के साथ कि सी ++। मैं इस तर्क के साथ जो समस्या देख रहा हूं वह यह है कि कुछ प्रोग्रामर का उपयोग वस्तुओं में सोचने के लिए नहीं किया जाता है, इस तरह वे OOP के लाभ नहीं देखते हैं।
जब भी आप एक माइक्रोकंट्रोलर के परिधीय का उपयोग करने के लिए तैयार होते हैं, तो यह संभावना है कि डिवाइस चालक के रूप में परिधीय हमारे लिए (खुद से या किसी तीसरे पक्ष से) सार हो गया है। जैसा कि मैंने पहले कहा, कि ड्राइवर सी सिंटैक्स का उपयोग करता है, जैसा कि अगले उदाहरण से पता चलता है (एनएक्सपी एलपीसी 11142 से सीधे लिया गया):
/ * TICKRATE_HZ * पर मिलान और व्यवधान के लिए टाइमर सेटअप
Chip_TIMER_Reset (LPC_TIMER32_0);
Chip_TIMER_MatchEnableInt (LPC_TIMER32_0, 1);
Chip_TIMER_SetMatch (LPC_TIMER32_0, 1, (टाइमरफ़्रेक / TICKRATE_HZ2));
Chip_TIMER_ResetOnMatchEnable (LPC_TIMER32_0, 1);
Chip_TIMER_Enable (LPC_TIMER32_0);
क्या आपको अमूर्तता दिखाई देती है? इसलिए, जब C ++ का उपयोग एक ही उद्देश्य के लिए किया जाता है, तो अमूर्त को शून्य लागत पर C ++ के एब्स्ट्रैक्शन और एनकैप्सुलेशन तंत्र के माध्यम से अगले स्तर पर लाया जाता है!
ग) यह एक ऐसी भाषा है जो हमें सामान्य कार्यक्रम लिखने की अनुमति देती है
जेनेरिक प्रोग्राम टेम्प्लेट के माध्यम से प्राप्त किए जाते हैं, और टेम्प्लेट की भी हमारे कार्यक्रमों के लिए कोई कीमत नहीं होती है।
इसके अलावा, स्थैतिक बहुरूपता को टेम्पलेट्स के साथ हासिल किया जाता है।
वर्चुअल तरीके, RTTI और अपवाद।
आभासी तरीकों का उपयोग करते समय एक समझौता होता है: बेहतर सॉफ्टवेयर बनाम प्रदर्शन में कुछ जुर्माना। हालाँकि, याद रखें कि डायनेमिक बाइंडिंग को वर्चुअल टेबल (फ़ंक्शन पॉइंटर्स की एक सरणी) का उपयोग करके लागू किया जा सकता है। मैंने सी में बहुत बार (एक नियमित आधार पर भी) ऐसा ही किया है, इसलिए मुझे आभासी तरीकों का उपयोग करने में कमियां नहीं दिखती हैं। इसके अलावा, C ++ में वर्चुअल तरीके अधिक सुरुचिपूर्ण हैं।
अंत में, RTTI और अपवादों के बारे में एक सलाह: एम्बेडेड सिस्टम में उपयोग न करें। हर कीमत पर इनसे बचें !!