Gerekçe
- C dili, bayttaki bit sayısını
CHAR_BIT makrosu aracılığıyla uygulama tanımlı olarak sunar ve C++ da bunu aynen devralır
- Modern donanımların çoğu, baytın 8 bit olduğu varsayımında birleşmektedir
- Bu belge, C++'ta baytın 8 bit olduğunun resmî olarak belirtilmesini önerir
- Başlıca derleyiciler zaten 8 bitlik baytı desteklemektedir
- GCC varsayılan değeri 8 olarak ayarlar
- LLVM
__CHAR_BIT__ değerini 8 olarak ayarlar
- MSVC
CHAR_BIT değerini 8 olarak tanımlar
- POSIX, 2001'den beri 8 bitlik baytı zorunlu kılmaktadır
- 8 bitlik baytı desteklemeyen yazılımlar uyumlu değildir
C üzerindeki etkisi
- Bu öneri, C++'ın 8 bit olmayan bayt kullanan mimariler açısından anlamlı olup olmadığını inceler
- C dili komitesi farklı bir sonuca varabilir ve iki komitenin uyumlu olması ideal olur
Dil
- C++ bellek modelinde temel depolama birimi bayttır ve bayt 8 bitten oluşur
CHAR_BIT makrosu climits başlığında bildirilir
Kütüphane
climits başlığı, C standart kütüphane başlığı limits.h ile aynı şekilde tüm makroları tanımlar
cstdint başlığı, belirli genişliğe sahip tamsayı türlerini ve tamsayı türlerinin sınırlarını belirten makroları sağlar
- Tüm türler ve makrolar yalnızca baytın 8 bit olduğu durumda isteğe bağlı değildir
GN⁺ özeti
- Bu belge, C++'ta baytın 8 bit olduğunun resmî olarak belirtilmesini amaçlayan bir öneridir
- Modern donanım ve yazılım platformlarının çoğu 8 bitlik bayt kullandığı için bunun standartlaştırılması makuldür
- 8 bit olmayan bayt mimarileri modern C++ ile uyumlu değildir ve bu tür mimarilerin önemi giderek azalmaktadır
- Bu öneri, C++'ın karmaşıklığını azaltır ve yeni programcıların dili daha kolay anlamasına yardımcı olur
- Benzer işleve sahip diğer projeler arasında POSIX standardı da vardır
1 yorum
Hacker News görüşü
JF’in "Can we acknowledge that every real computer works this way?" serisinde "Signed Integers are Two’s Complement" hakkında bir değinme vardı
D dili şu açılardan büyük ilerleme sağladı
Bazı insanlar hâlâ DSP ile uğraşıyor
Kişisel olarak, "rakiplerden bayt başına %50 daha fazla bit sunan" 12 bitlik bir fantezi konsolunu belgelendirmek eğlenceli geliyor
C++’ın neleri kaldırabileceği veya basitleştirebileceği hakkında bir soru vardı
rand()fonksiyonunun bozuk olduğu ve düzeltilemediği söylenmişti; buna rağmen hâlâ kullanımdan kaldırılmadığını duydumCHAR_BITdeğerinin 8 dışında bir şey olmasının anlamlı bir kullanım alanı olmaması konusunda karışık duygularım varTeklife gösterilen ilgi için teşekkürler; geri bildirimlere dayanarak güncellenmiş bir taslak hazırladım
6 bit bayt kullanan retro bir mikrobilgisayar fikrini seviyorum
int8_t == char == 8 bitzorunluluğuna katılıyorum, ancak baytın 8 bit olduğu yanılgısını yayma konusunda emin değilimchariçin bir "takma ad"