링커, 로더, 실행 파일
링커에서 약한 심볼(weak symbol)의 취급으로 올바른 것은?
- A약한 심볼은 항상 다른 정의보다 우선한다
- B같은 이름의 일반적인(강한) 정의가 있으면 그쪽이 사용되고, 없으면 약한 정의가 사용된다
- C약한 심볼을 포함한 파일은 링크할 수 없다
정답과 해설 보기
정답: B. 같은 이름의 일반적인(강한) 정의가 있으면 그쪽이 사용되고, 없으면 약한 정의가 사용된다
약한 심볼은 「다른 정의가 없으면 이것을 쓴다」라는 예비 정의입니다. 임베디드 소프트웨어에서는 인터럽트 핸들러의 기본 처리를 약한 심볼로 준비해 두고, 사용자가 같은 이름의 함수를 작성하면 그것으로 교체되게 하는 사용법이 자주 보입니다. 강한 정의끼리 겹치면 다중 정의 오류가 되지만, 약한 정의와 겹치는 것은 오류가 되지 않습니다.
- A. 반대로 강한 정의에 밀립니다.
- B. 올바릅니다. 기본값으로서 교체 가능한 정의를 준비할 수 있습니다.
- C. 문제없이 링크할 수 있습니다.