डीएमडी स्रोत ब्राउज़ करना, ऐसा लगता है कि alignof
align
विशेषताएँ ध्यान में नहीं रखता है।
... if (ident == Id::__xalignof)
{
e = new IntegerExp(loc, alignsize(), Type::tsize_t);
}
यह मान alignsize()
के साथ एक size_t
अभिव्यक्ति में एक .alignof
अभिव्यक्ति बदल देता है, तो चलो एक स्थिर सरणी के लिए alignsize()
को देखो:
unsigned TypeSArray::alignsize()
{
return next->alignsize();
}
यह सिर्फ
यहाँ जहां यह नियंत्रित किया जाता है है आपके मामले में तत्व प्रकार (void
) का संरेखण प्राप्त करता है।
void
TypeBasic::alignsize()
, जो सिर्फ TypeBasic::size(0)
switch (ty)
{
...
case Tvoid:
size = 1;
break;
...
}
को आगे कैसे अन्य प्रकार संभाल alignof
को देखते हुए द्वारा नियंत्रित किया जाता है, यह नहीं दिखता है जैसे align
विशेषताओं को ध्यान में सब पर लिया जाता है, लेकिन मैं गलत हो सकता है । यह संरेखण मैन्युअल रूप से परीक्षण करने लायक हो सकता है।
स्रोत
2012-05-19 11:49:08
लॉल प्रतीक्षा करें तो 'संरेखण' क्या करता है? क्या यह सिर्फ सजावट के लिए है? xD – Mehrdad
मुझे लगता है कि 'align' काम करता है, लेकिन' alignof' बस प्रकार के संरेखण को प्राप्त करता है, इसलिए वे अलग-अलग चीजें हैं। –
अजीब, मैं उन समस्याओं में भाग रहा था जो मुझे 'alignof' की जांच करने के लिए प्रेरित किया ... हालांकि डबल-चेक होना चाहिए .. – Mehrdad