DMD kaynağına göz attığınızda, align
öznitelikleri dikkate alınmaz.
... if (ident == Id::__xalignof)
{
e = new IntegerExp(loc, alignsize(), Type::tsize_t);
}
Bu değere alignsize()
ile size_t
ifadesi içine .alignof
ifadesini dönüştürür, bu nedenle statik bir dizi için alignsize()
bakalım:
unsigned TypeSArray::alignsize()
{
return next->alignsize();
}
It sadece burada
ele alınır nerede Durumunuzdaki eleman tipinin (void
) hizalanmasını sağlar.
void
sadece ileriye TypeBasic::size(0)
switch (ty)
{
...
case Tvoid:
size = 1;
break;
...
}
diğer türleri alignof
nasıl ele baktığımızda TypeBasic::alignsize()
tarafından ele alınır, align
nitelikleri hiç dikkate alınır gibi görünmüyor, ama yanlış olabilir . Hizalamayı manuel olarak test etmeye değer olabilir.
lol bekle, ne yaparsın? Sadece dekorasyon için mi var? xD – Mehrdad
Bence 'align' çalışıyor, ama 'alignof' sadece türün hizalanmasını alıyor, bu yüzden ayrı şeyler. –
Weird, 'alignof' kontrol etmemi sağlayan sorunlara koşuyordum ... – Mehrdad