Forum: D Programlama Dili RSS
pragma(msg)
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: pragma(msg)
Uyarı: bu hiç önemli bir konu değil... :)

D'nin en güçlü olanaklarından birisi, işlevlerin derleme zamanında da işletilebilmeleri. CTFE (compile time function evaluation) denen bu olanağı şurada "Derleme zamanında işlev işletme" başlığında anlatmaya çalışmıştım: :)

  http://ddili.org/ders/d/islevler_diger.html

Orada, dizginin gerçekten de derleme zamanında oluşturulmuş olduğunu programın içine bakarak göstermeye çalışmıştım; Linux konsollarındaki strings programını kullanmıştım:

$ strings deneme | grep -A 4 Tatl

Onun yerine pragma(msg) da kullanılabilirmiş.

"99 Bottles of Beer" şarkısı (tekerlemesi?) programı sitesini daha önce de görmüştük. Şu program, bütün sözleri derleme zamanında oluşturuyor ve sonucu pragma(msg) ile derleme zamanında ekrana yazdırıyor:

  http://www.99-bottles-of-beer.net/language-d-1212.html

Bir örnek:

string bar(string mesaj)
{
    return mesaj ~ " bar";
}
 
string foo(string mesaj)
{
    return bar(mesaj ~ " foo");
}
 
pragma(msg, foo("ğş"));

Tabii o program main işlevi bulunmadığı için oluşturulamaz ve bir sürü bağlayıcı hatası oluşur; ama olsun, o hata mesajlarından hemen önce "ğş foo bar" da yazdırılıyor. :)

Diğer bir sorun, yukarıdaki string'leri dstring yapınca ortaya çıktı. Herhalde derleme ortamı ile konsolun bir etkileşimi olmalı. Şu noktada dert etmiyorum. :/

D'nin yalnızca üç pragma'sı varmış:

  http://www.digitalmars.com/d/2.0/pragma.html

Başka derleyiciler kendileri başka da tanımlayabiliyorlar.

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-21, 11:15:34 (UTC -08:00)