@returnAddress — 함수가 돌아갈 때 실행될 주소 얻기
@returnAddress — 함수가 돌아갈 때 실행될 주소 얻기
함수가 return으로 돌아가는 순간, 그다음으로 실행될 기계어 명령의 주소가 필요할 때가 있어요. 디버깅이나 성능 프로파일링에서 '지금 이 함수가 어디에서 불려 돌아가는지'를 알고 싶을 때죠. @returnAddress는 그 주소를 바로 알려주는 내장 함수예요.
본문
@returnAddress() usize
이 함수는 현재 함수가 반환될 때 그다음으로 실행될 기계어 명령(machine code instruction)의 주소를 반환해요. 풀어 말하면, 함수가 return을 만나 호출한 쪽으로 돌아가자마자 찍힐 실행 지점을 가리키는 주소인 셈이죠.
한 가지 명심할 점은, 이 주소가 지니는 의미가 타깃(목표 플랫폼)마다 달라진다는 것이에요. 실제로 어떤 주소가 나오는지, 그리고 그 주소가 정확히 무엇을 가리키는지는 대상 아키텍처에 따라 달라서, 모든 플랫폼에서 일관되게 기대하기는 어려워요.
또한 @returnAddress는 함수 스코프 안에서만 유효해요. 그리고 만약 이 함수가 호출하는 쪽 함수로 인라인(inline)된다면, 반환되는 주소는 인라인된 이 함수가 아니라 호출한 함수(바깥 함수)에 적용돼요. 이 함수를 쓸 때는 이런 인라인의 영향을 함께 생각해 줘야 해요.