링커, 로더, 실행 파일
C 언어에서 함수에 static을 붙여 정의했을 때(예: static int helper(void))의 효과로 올바른 것은?
- A그 함수는 프로그램 실행 중 계속 메모리에 남아 있지 않는다
- B그 함수는 파일 안에서만 보이며, 다른 파일에 같은 이름의 함수가 있어도 충돌하지 않는다
- C그 함수는 다른 어떤 함수보다 먼저 실행된다
정답과 해설 보기
정답: B. 그 함수는 파일 안에서만 보이며, 다른 파일에 같은 이름의 함수가 있어도 충돌하지 않는다
함수나 전역 변수에 static을 붙이면 내부 링키지가 되어, 심볼은 그 파일 안에서만 사용되고 다른 파일에서는 참조할 수 없게 됩니다. 이름 충돌을 막을 수 있을 뿐 아니라, 컴파일러는 그 함수가 다른 곳에서 호출되지 않는다는 것을 알 수 있으므로 인라인 전개나 사용되지 않는 함수의 삭제 같은 최적화도 하기 쉬워집니다.
- A. 함수의 코드는 실행 중 계속 메모리에 있습니다.
- B. 올바릅니다. 내부 링키지가 됩니다.
- C. 실행 순서는 바뀌지 않습니다.