Merhaba yine ben ve ilginç bir istekle karşınızdayım :)
C dilindeki define özelliği D dilinde de var mı? Yoksa eğer Walter abimizin böyle bir düşüncesi var mı?
Zekeriya
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
Thread overview | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Merhaba yine ben ve ilginç bir istekle karşınızdayım :) C dilindeki define özelliği D dilinde de var mı? Yoksa eğer Walter abimizin böyle bir düşüncesi var mı? Zekeriya -- |
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Talha Zekeriya Durmuş (zekeriyadurmus) | C dilini bilmiyorum ancak sorduğun yeni ad tanımlama ise şöyle yapılabilir
yada
-- |
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Talha Zekeriya Durmuş (zekeriyadurmus) | Öncelikle olmadığını belirteyim ama onun yerine son derece gelişmiş bir şablon mimarisi var... Ali hocamın bu konuda, forumdaki bir kaç cevabını nakledeyim: Alıntı: >Makroların sıkıntılı ve sorunlu oldukları konusunda şüphe yok. Olabilse, hiç makro kullanılmasın ama bazen mecbur kalınır. (Bjarne Stroustrup C++'tan çıkartmaya çalışmıştır ama bazı durumlarda şarttır.) Alıntı: >Alıntı: >Konuyu dağıtıyorum ama daha geçende TDPL'de anlamını bilmediğim 'macro' anahtar sözcüğüne rastladım. Hiçbir açıklama verilmeden listelenmişti. 'macro' Can'ın gösterdiği sayfada ve şurada da geçiyor: Anlamını sordum: http://forum.dlang.org/post/jsd9us$2fob$1@digitalmars.com Ali 'macro' şimdilik kullanılmıyormuş. İlerisi için ve olasılıkla "AST macros" olanağı için ayrılmış bir sözcükmüş. ve AST makroları geçen/açıklanan bir başlık: http://ddili.org/forum/post/3023 -- |
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Salih Dinçer | C dilini bende bilmiyorum :P ama gördüğüm örneklerde anladığım kadarıyla compile time çalışıyor ve #define NEXT() asm("jmp *%0"::"r"((++ip)->jmp)); goto *ip->jmp şeklindeki bir define next() gördüğü yere __asm şeklinde devam eden kodu yazıyor. Her yere bunu yazmak yerine sadece next() yazmak yeterli oluyor. Aynı şekilde D dilinde bu işlem yapılabilir mi? Şablonlar ile hiç uğraşmadım :( pek bir bilgim yok malesef. Zekeriya -- |
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Salih Dinçer | Alıntı: >alias yeniad = esliad; Bu kullanım henüz desteklenmiyormuş. Anladığım kadarıyla define tür tanımlamaktan daha fazlası imiş. Bunun için Salih Dinçer'in bahsettiği şablon olanağı zaten buna ihtiyaç bırakmıyacaktır. Belki bazı durumlarda mixinde kullanabiliriz.
Bazı gereken yerlerde lambda kullanılabilir? Bunun direk karşılığı D'de yok bildiğim kadarıyla. -- |
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Can Alpay Çiftçi (canalpay) | mixin()'i şablonlarda da kullanıyoruz ama bu daha farklı bir olay arkadaşalar... Bir makro düşünün ki dışarıdan parametre alsın. Tüm argümanları makro içine yerleştirip sonsuz olasılıktaki kodu üretsin. Sonra derlerken bunu çağrıldığı yerdeymiş gibi varsaysın. -- |
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Can Alpay Çiftçi (canalpay) | Alıntı: >ama gördüğüm örneklerde anladığım kadarıyla compile time çalışıyor ve Şablonlarda mixinde derleme zamanı çalışır. mixin kısaca parametrede verilen kodu derleme zamanında oraya ekler. Örneğin mixin için şu iki kodun asm olarak farkı olmasa gerek(enum stringden farklı olarak referans değil değer türüymüş? Yinede fark olmasa gerek.):
ile
aynı asm kodu üretmesi gerekiyor. Derleme zamanı. Şablon ise kısaca gereksiz yere overload(aşırı yükleme) yapmayı engellemek için kullanılan bir olanak. Şurada çok basit Ali Bey anlatmıştı: http://ddili.org/forum/thread/82 Ayrıntı için dershaneye bakabilirsin. Şuan google'dan araştırırken bir şeyler buldum: http://dlang.org/mixin.html //Buradaki örnekte şablon CTFE için yanı derleme zamanında işlev işletebilmek için kullanılmış. Orada ayrıca bu var :http://dlang.org/template-mixin.html Kısaca hangi amaçla kullandığına göre değişik zamanlarda değişik şeyler kullanılabilir. Ali bey burada özellikle mixinin D'deki gibi şablon şeklinde kullanımını göstermiş. Ancak şablon öğrenmen şart. Çünkü şablon hem senin istediğin gibi her şeyi derleme zamanı sunuyor. Hem de -- |
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Bu durumda pekala kendimiz bir önişlemci yazabiliriz. Tek yapması gerek derlenecek dosyayı alıp makrolar için gereken işlemi yaptıktan sonra oluşturacağı geçici dosyayı DMD'ye verir ve o da işini bitirdikten sonra dosyayı siler.. -- |
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Açıkçası define özelliğini aşağıdaki kod üzerinde kullanmak istiyordum.
araya asm kodları, d kodları vs girecek ve bu yüzden çok kod kalabalığı olacak. Mixin yapısını inceledim biraz ama ya ben yapamadım ya da benim durumum için uygun değil. Zekeriya -- |
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Salih Dinçer | Alıntı: >Bu durumda pekala kendimiz bir önişlemci yazabiliriz. Tek yapması gerek derlenecek dosyayı alıp makrolar için gereken işlemi yaptıktan sonra oluşturacağı geçici dosyayı DMD'ye verir ve o da işini bitirdikten sonra dosyayı siler.. Çok mantıklı çok doğru söylediniz :D Eğer olmazsa bunu yaparım, eğer yaparsam paylaşırım forumda. Zekeriya -- |