Forum: D Programlama Dili RSS
D hizalama
Avatar
zekeriyadurmus #1
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: D hizalama
Başlık pek bir şey ifade etmiyor gibi dursa da bugün bir şeyin farkına vardım belkide yeni d nin özelliğidir bilemedim ama

import std.stdio;
 
void main(){
    writeln(aa());
    writeln(aa.sizeof);
}
 
struct aa{
    ubyte typ;
    bool refcount;
    bool is_ref;
}

Kodu windows ortamında her tür için 4 bayt yani toplamda 12 bayt yer kaplıyor iken linux da toplam 3 bayt yer kaplaması çok ilginç. Şu an evimde hiç windows makine olmadığı için tekrar test edemiyorum ama d'nin align (hizalama) özelliği ile alakalı sanırsam ve windows ortamında 4 bayt hizalamanın dışına çıkamıyor veya çıkmak istemiyor.

Zekeriya
Bilgi meraktan gelir...
acehreli (Moderatör) #2
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ı
Neden farklı olduğunu bilmiyorum ama bir de .alignof var:
    writeln(aa.alignof);
Yapıların ve üyelerinin nasıl hizalandıkları da align niteliği ile belirlenebiliyor:

  http://dlang.org/attribute.html#align
align(1) /* Bütün yapı nesnesi 1 bayta hizalanır */
struct aa{
align(1): /* Her üye 1 bayta hizalanır (bu durumda fark etmiyor) */
    ubyte typ;
    bool refcount;
    bool is_ref;
}
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-20, 01:11:32 (UTC -08:00)