C ++ birden fazla programlama dilidir:
a) Bu bir "daha iyi" C b) Nesne yönelimli bir dil c) Genel programlar yazmamıza izin veren bir dil.
Bu özelliklerin tümü ayrı ayrı kullanılabilse de, ikisi aynı anda kullanıldığında en iyi sonuçlar elde edilir. Bununla birlikte, yalnızca bir tanesini seçmeyi seçerseniz gömülü yazılımın kalitesi artacaktır.
a) "Daha iyi" bir C
C ++ güçlü bir yazı dilidir; C'den daha güçlü. Programlarınız bu özellikten yararlanacaktır.
Bazı insanlar işaretçilerden korkar. C ++ referansları içerir. Aşırı yüklenmiş fonksiyonlar.
Ve söylemeye değer: Bu özelliklerin hiçbiri daha büyük veya daha yavaş programlarda ortaya çıkmaz.
b) Nesne yönelimli bir dildir.
Birisi bu yazıda, mikrodenetleyicilerde makineyi soyutlamanın iyi bir fikir olmadığını söyledi. Yanlış! Hepimiz, gömülü mühendisler, makineyi her zaman soyutladık, sadece C ++ 'nın diğer sintaksıyla. Bu argümanla gördüğüm sorun, bazı programcıların nesnelerde düşünmeye alışık olmadıkları, bu şekilde OOP'un yararlarını göremedikleri.
Bir mikrokontrolörün çevre birimini kullanmaya hazır olduğunuzda, çevre biriminin aygıt sürücüsü biçiminde (kendiniz veya bir üçüncü tarafça) bizim için soyutlanmış olması muhtemeldir. Daha önce de söylediğim gibi, bir sonraki örneğin gösterdiği gibi (doğrudan bir NXP LPC1114 örneğinden alınmış) bu sürücü C sintaksını kullanıyor:
/ * TICKRATE_HZ * / de eşleşme ve kesme için zamanlayıcı ayarları
Chip_TIMER_Reset (LPC_TIMER32_0);
Chip_TIMER_MatchEnableInt (LPC_TIMER32_0, 1);
Chip_TIMER_SetMatch (LPC_TIMER32_0, 1, (timerFreq / TICKRATE_HZ2));
Chip_TIMER_ResetOnMatchEnable (LPC_TIMER32_0, 1);
Chip_TIMER_Enable (LPC_TIMER32_0);
Soyutlamayı görüyor musun? Böylece, aynı amaç için C ++ kullanıldığında, C ++ 'nın soyutlama ve kapsülleme mekanizması ile sıfır maliyetle soyutlama bir sonraki seviyeye getirilir!
c) Genel programlar yazmamızı sağlayan bir dildir.
Genel programlar, şablonlar aracılığıyla gerçekleştirilir ve şablonların programlarımız için de maliyeti yoktur.
Ayrıca, şablonlarla statik polimorfizm elde edilir.
Sanal yöntemler, RTTI ve istisnalar.
Sanal yöntemleri kullanırken bir uzlaşma var: performansta bir miktar para cezası yoksa daha iyi bir yazılım. Ancak, dinamik bağlanmanın sanal bir tablo (bir işlev işaretçisi dizisi) kullanılarak uygulanmasının muhtemel olduğunu unutmayın. Aynı şeyi C de birçok kez yaptım (düzenli olarak bile), bu yüzden sanal yöntemleri kullanmanın sakıncalarını göremiyorum. Dahası, C ++ 'da sanal yöntemler daha şık.
Son olarak, RTTI ve istisnalar hakkında bir öneri: Gömülü sistemlerde KULLANMAYIN. Onları ne pahasına önlemek !!