| |
| Posted by Ali Çehreli (acehreli) in reply to hsencan | PermalinkReply |
|
Ali Çehreli (acehreli)
Posted in reply to hsencan
| FILE ve LINE (ve arkadaşları) özel değişkenlerdir; bulundukları nokta ile ilgili bilgi taşırlar: dosyanın ismi ve satırın numarası.
Makrolar, C++ dilinden çok farklı olan önişlemci ile ilgilidir. C'deki becerilerinin bazıları C++'ta başka olanaklarla halledilebilir: işlev, 'const int', vs. O yüzden, olabildiğince kaçınılır. Şöyle bir çevirim var:
http://acehreli.org/turkcecpp/gotw_077.html
Şu durumlarda yine de gerekir:
-
Bu örnekteki '#X' gibi "ifadeyi dizgiye dönüştürme"
-
FILE ve LINE gibi değişkenlerden yararlanabilme
-
'##' ile iki dizgiyi birleştirme
-
Hazır sabit tanımlama (örneğin, const int bile yer tutar ama #define ile tanımlanan sabit sanki 5 yazılmış gibi derlenir)
-
#include ile başlık ekleme
D, önişlemciden tamamen kurtulabilmiştir:
-
İfadenin dizgisi .stringof ile elde edilebilir. (Makrolar bu konuda daha üstündür ama yine de D çoğu durumda yeter)
-
FILE, LINE, vs. varsayılan parametre değeri olarak kullanıldıklarında işlevin tanımlandığı noktayı değil, işlevin çağrıldığı yeri bildirirler:
http://ddili.org/ders/d/parametre_serbestligi.html#ix_parametre_serbestligi.__FILE__
-
D'nin CTFE olanağı ile her dizgi derleme zamanında birleştirilebilir
-
Hazır sabitler için 'enum' kullanılır
-
D başlık dosyası kullanmaz; #include'un bazı kullanımları için 'import string' var (henüz kitapta yok)
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
|