가변인자 주소 계산하는게 이건데
#define __crt_va_arg(ap, t) \
((sizeof(t) > sizeof(__int64) || (sizeof(t) & (sizeof(t) - 1)) != 0) \
? **(t**)((ap += sizeof(__int64)) - sizeof(__int64)) \
: *(t* )((ap += sizeof(__int64)) - sizeof(__int64)))
삼항연산자 크기가 8바이트보다 많아서 트루되면 **(t**)(원래주소) 이게 반환되거든?
8바이트보다적으면 *(t*)임....
ap는 char*이라서 (t*)ap 의 주소로 엑세스하는거잖아?
8바이트가 넘어가면 가변인자 넘길때 외딴곳에 복사해놓고 그 주소를 가변인자로 넘겨주는거야? 그러면 두번 엑세스햇을때 말되는거같은데
자료형 크기가 크면 보통 함수인자에 포인터로 넘겨 주지 않을까?
나는 값으로 줫는데 저렇게 하길래
디버깅 해봐야 정확하겠는데ㅇㅅㅇ
C 주소가지고 노는거 재밌긴한데 너무어렵네