2009-11-14 18 views
25

merak ediyorum. Örneğin.C/C++ stdlib adlandırma kuralının adı? C/C++ standart kütüphaneler kullanılan adlandırma kuralı bir adı vardır, ya da en azından bir hile sayfalık nerede kuralları arama eğer

push_back -- underscore used 
setstate  -- but not used here! 
string::npos -- when to use abbreviations? 
fprintf 
... 

C/C++ standart kitaplıklarında kullanılan adlandırma kurallarının belirli bir adı var mı?

+9

, 'std :: ios_base :: Init' o_O –

+0

Ne garip büyük harf ?! büyük harfler de kullanılıyor! : P – AraK

+41

"Bu hafta gelmek için ne tür bir şey olursa olsun" denir. C tarihinin başlarında yer aldı –

cevap

3

üzücü gerçek olduğunu - hiçbir gerçek kongre yoktur.

ağrılı hatırlatma olarak stdio işlevlerinin argüman sırasını bakın.

+2

Aslında bunlar. Geleneksel C işlevi ABI çağrısı ile, aynı son argümanı ile birden çok işlevi çağırmak (yani için (i = 0; i ephemient

0

ben cevabım yok, ama en azından, ben C ve C++ aynı adlandırma kuralı kullanmak sanmıyorum.

+0

Daha fazlasını açıklar mısınız? – AraK

+0

fprintf, strlen, itoa (shudder) gibi şeyler C kütüphanelerinden gelir. Bunlar küçük harf, alt çizgi ve ağır kısaltma kurallarına sahiptir. C kütüphaneleri C++ 'da "c" ile başlayanlar: cstdio, cstring, cmath vb. – UncleBens

+0

"C" nin bir ismi "strpbrk" ve "C++" nin bir ismi "sync_with_stdio", "swstdio" değil :) –

24

C/C++ ünlü biz-go makyaj malzeme-up-gibi-birlikte adlandırma kuralını kullanır. Genel olarak, C/C++ standart kütüphane adlandırma kuralı hakkında söyleyebileceğiniz tek tutarlı şey, deve harfini kullanmamasıdır (C++ STL şablon typenames hariç), küçük harf sınıfını ve işlev adlarını kullanır ve (bazen) kelimeleri ayırmak için alt çizgi kullanır. Ancak alt çizgilerin kullanımı daha çok bir C++ meselesidir; C, özellikle, kelimeleri kısaltmaya eğilimlidir. strlen, memcpy. Bu, muhtemelen UNIX'in ilk günlerinde işler için çok kısa isimler kullanma eğiliminin bir sonucudur. C kütüphaneleri, akarsu, ipler, STL (konteynerler + algoritmaları + yineleyiciler):

+17

"şeyler için çok kısa adlar kullanma eğilimi", ya 80-char veya daha küçük terminaller nedeniyle; derleyicilerdeki kaynak limitleri; Huffman'ın doğuştan gelen bir evreni evreni kodlar; veya yukarıdakilerin tümü. –

+19

Pre-ansi derleyiciler, Fortran, IIRC ile uyumlu olması için sadece bir sembolün ilk 6 karakterinin dikkate alındığını düşünür, bu yüzden strlen', strlenxyz' ve “strlenohmygodwhathaveidone” sembolleri aynı şeyi ifade eder. Yani, ANSI öncesi derleyiciler ile uyumluluk için, ANSI C standardı, tüm standart kütüphane sembollerinin ilk 6 karakterinin birbirinden farklı olmasını sağlamıştır. Bağlantı için –

6

birkaç farklı insanlar ve biraz farklı kuralları kullanarak farklı zamanlarda icat gruplar olduğunu düşünüyorum. Ikincisi, boost ve C++ 0x adlandırma gibi şeyler için örnek ayarlar kongre, olarak görülebilir ki bir his var.

8

C standart kütüphanesi ad çatışmalarının önlemek için izlemesi gereken well defined rules sahiptir. C++ hakkında bir şey bilmiyorum.

bu PHP kitaplığımızı kontrol etmelidir dağınıklık olduğunu düşünüyorsanız

...

+0

+1. Bildiğinizden daha fazla isim ayrılmıştır, örneğin '_t' içinde biten türler. – u0b34a0f6ae

+0

@kaizer: afaik rezerve '_t' bir POSIX kısıtlamasıdır – Christoph

+0

Evet. C sadece "uint" veya "int" ile başlayan ve _t ile bitenleri ayırır. –

0

Ben bir isim olduğunu düşünmüyorum ya adlandırma kurallarına kümesi.

C ve C++ standartlarında adlandırma kurallarına hafifçe ilgili olsa da, farklıdır. Özellikle

, C kütüphanesi, bir fonksiyon ya da makro adı C++ kütüphanesi farklı bir çizgi (AFAICR) içerir.

emsal tarafından kontrol edilen C kütüphanesi adlandırma çoğu; Mevcut uygulamaların standartlaştırılması (yaklaşık 1984 itibariyle), oldukça az sayıda icat ile (<locale.h> aracılığıyla ana alanın kullanımı ana konum).

C++ kütüphanesi de emsal üzerine kuruluydu - ama farklı bir dizi öneri vardı ve C kütüphanesindeki fonksiyonlar standart olarak kabul edilmeden önce STL'nin yaygın kullanımda olmadığının tartışılabilir olduğunu düşünüyorum. . Ayrıca

İlgili konular