DMD 소스를 살펴보면 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::size(0)
switch (ty)
{
...
case Tvoid:
size = 1;
break;
...
}
다른 종류의 alignof
을 처리하는 방법을 보면 TypeBasic::alignsize()
에 의해 처리되고, align
특성을 전혀 고려처럼은 보이지 않는,하지만 난 잘못 될 수 . 수동으로 정렬을 테스트 해 보는 것이 좋습니다.
축하합니다. 그래서'align'은 무엇을합니까? 장식용으로 그냥 있습니까? xD – Mehrdad
'align'이 효과가 있다고 생각합니다. 그러나'alignof'는 타입의 정렬을 얻습니다. 그래서 그들은 별개의 것들입니다. –
이상한, 나는'alignof'을 체크하도록 이끌어 낸 문제들에 부딪쳤다. – Mehrdad