2013-04-29 22 views
5

Standart uyum benim Arduino programlamak öğreniyorum ama ben C++ Standart Kütüphanesi kullanmak olamayacağını bulmak çok hayal kırıklığına uğradım demektir C++, içinde oldukça sağlam bir altyapıya sahip. Bunun nedenini tam olarak anlamaya çalışıyorum ve şimdiye kadar tek mantıklı açıklama, AVR-GCC'nin C++ Dil Standardı ile uyumlu olmamasıdır.C++ AVR-GCC

Şimdi derleyicilerin çoğunun Standard'dan küçük sapmalar olduğunu biliyorum, ama AVR-GCC'yi GCC, Clang veya kullandığım diğer derleyicilerden ayıran gerçekten büyük bir şey olması gerektiğini düşünüyorum. önce. Tamamen eksik olan ya da bir şeylerin olduğu büyük ölçüde önemli bir özellik gibi. Örneğin, neden std::vector kullanamadığım için iyi bir neden olmalı. Sebepsiz bırakmak için çok kullanışlı. Yani ne

mı? AVR-GCC diyalektindeki devasa delik, C++ Standart Kütüphanesini bir Arduino üzerinde çalıştırılamaz kılan nedir? Ve bunu sadece meraktan daha fazlasını istiyorum, çünkü dilde devasa delikler varsa, beklemediğim bazı tanımlanmamış davranışlara karışmadan önce onları bilmem gerek.

+0

. Bu çok talihsiz, biliyorum. Yeni yüzyıla 13 yıl gibi olmak, bazen 90'lı yaşlarda olduğumuzu hissettiriyor. –

+0

Hiç kimse gerçekten her durumda – PlasmaHH

+1

@PlasmaHH bunu kullanan çoğunlukla en gömülü C++ platformlar stdlib ile gemiyi yok geliyor bana: Parçalı, ama bu daha bir bahane gibi geliyor. –

cevap

-3

AVR-GCC clearly the work of hobbyists olduğunu. Esasen, hiç kimse Standart Kitaplık uygulaması yazmanın zor işlerini yapmaya istekli değildir. Standart bir kütüphane yazmak, masaüstü platformları için önemsiz bir görev değildir ve Arduino'nun sınırlı yetenekleri sadece daha da zorlaştırır. gömülü dünyadaki tüm uyumsuzluk, uyumsuzluk ve genel bok desteğiyle, C++ var

+1

"PROGMEM" in neden "hobi" anlamına geldiğini açıklayabilir misiniz? – angelatlarge

+1

@angelatlarge: İyi derleyiciler bir anahtar kelimeye ihtiyaç duymaz. Ayrıca, iyi derleyici yazmaları "PROGMEM'in nereye gitmesi gerektiği konusunda sert ve hızlı bir kural yoktur" ile sonuçlanmayacaktır. C ve C++ sözdizimi bazı belirsizlikler olabilir, ancak bu ölçekte değil. Sözdizimi ** değil ** bulanık. – MSalters

+3

Hala bu iddia ile kafam karıştı: Kötü derleyici tasarımının 'uçucu' kanıtı gibi bir şey mi? Kayıt olmaktan ne haber? AVR'nin çok az RAM'e sahip bir Harvard mimarisi işlemcisi olduğu ancak veriyi ROM'da depolayabilme yeteneği (çeşitli performans maliyetleri ile bağlantılı) olduğu göz önüne alındığında, zor ve hızlı kurallar ve bulanık sözdizimi ile ilgili noktanızı gördüğümden emin değilim. – angelatlarge