C için, C Programlama Dili'nin (diğer adıyla K&R) ilk baskısı, önişlemci makroları hakkındaki sezginizin doğru olduğunu göstermektedir:
Sembolik sabit adlar genellikle büyük harfle yazılır, böylece küçük harfli değişken adlarından kolayca ayırt edilebilirler.
Birçok yönden bu, makroların büyük harflerle etiket, opcode, kayıt isimleri ve diğer her şeyle birlikte tanımlandığı montaj dilinden bir engeldi. AT & T tarzı montajın ortaya çıkışı bazı platformlarda değişti, ancak bence küçük harfleri destekleyen terminallerin bir şey haline gelmesinden ve Unix'in "küçük harf işletim sistemi" olarak adlandırdığım şeyden büyük ölçüde etkilendiğini düşünüyorum.
Diğer iki noktada, .500 vuruyorsunuz:
Sıralama
İkinci baskı yayınlanıncaya enum
kadar tanımlanmış, numaralandırma sabitleri olarak adlandırılmış ve sabitler bölümünde ele alınmıştır. A ile tanımlanan sabitler enum
sembollerle temsil edildiğinden, onları sembolik sabitler yapar, bu da önerilen kuralı izleyecekseniz büyük harfle adlandırılmalıdır. (Önişlemci makroları gibi, hiçbir şey başka türlü yapmanıza engel olmaz.)
Buradaki sonuç, takip eden bazı dillerden farklı olarak, C enum
, türlerin kendilerinin farklı olduğu birinci sınıf bir tür olarak davranmaz , numaralandırma değerleri her türe özgüdür ve başkalarında yeniden kullanılabilir. Bunun yerine, #define
tanımlayıcıları eklenmiş tamsayı dizileri üreten için etkili bir stenograf . Bu yapar
enum foo { BAR, BAZ };
enum quux { BLETCH, BAZ };
geçersiz çünkü tüm semboller kapsamı paylaşır ve BAZ
yeniden tanımlanır. (Bu, ön #define
işlemciye göre bir iyileştirme idi, bu da o zaman bir diğerini klozet hakkında uyarmadı.) Dahası, C onları karıştırıp karıştırmamanız umursamıyor çünkü hepsi sadece tamsayılar,
enum foo { BAR, BAZ };
enum quux { BLETCH, BLRFL };
enum foo variable = BLETCH;
tüm uyarılar açık olan modern bir derleyicide bile tamamen geçerlidir.
İnş
Not: const
Anahtar sözcük 1981'de Stroustrup'un C With Classes (C ++ 'a dönüşen) ile ortaya çıktı ve sonunda C tarafından kabul edildi. İsim seçimi talihsiz, çünkü K & R'nin şu anda ne dediğimiz anlamına gelmek için sabit terimini kullanmasıyla çarpışıyor değişmez (örneğin 38
, 'x'
ya da "squabble"
). İkinci baskıdaki metin bunu yansıtacak şekilde yeniden yazılmamıştır.
Beyan edilen değişkenler const
farklı bir hikaye çünkü hala değişkenler. Değiştirilmeleri gerekiyordu, ancak sabit bir değişken kavramının, jumbo karideslerden başka bir tartışma için yemden daha mantıklı olup olmadığı. Durum ne olursa olsun, C asla bu konuda gerçekten ciddi değildi, çünkü standart sadece derleyiciyi değiştirmeye çalıştığınızda tanı koymasını gerektirir. Bir değişiklik derlenir ve yürütülürse, gerçek davranış tanımsızdır.
Değişkenler olarak, her şeyin const
küçük harfle adlandırılma kuralını izlemesi mantıklıdır . Değişmez değerleri temsil etmek için kullanmanın bazı güvenlik avantajları vardır, ancak değeri elde etmek için derleme birimleri arasında ulaşmak zorunda kalırsanız iyi bir optimizasyon sağlamaz.
Olmadıkları şey K&R anlamında sabittir ve bu nedenle tanımlayıcıları büyük harf olmamalıdır. Bazı insanlar bunları bu şekilde kullanır, ancak birkaç özel durum dışında önerdiğim bir uygulama değildir.
const
tanımlayıcıların küçük harf ve#defines
büyük harf olduğu görülmektedir. Java, sabitler ve diğer diller için büyük harf kabul etti, ancak bu son biraz yanlış olabilir. Daha fazla araştırmaya ihtiyaç var! :)