5.2.5. 템플릿 인스턴스화

ARM 컴파일러는 자동으로 모든 템플릿 인스턴스화를 수행하며 링크 후에는 각 템플릿 엔터티에 하나의 정의만 남도록 합니다. 컴파일러는 명명된 공통 섹션에서 템플릿 엔터티를 내보냄으로써 이 작업을 수행합니다. 따라서 모든 중복된 공통 섹션, 즉 같은 이름을 가진 공통 섹션은 링커에 의해 제거됩니다.

Note

--pending_instantiations 컴파일러 옵션을 사용하여 해당 템플릿의 동시 인스턴스화 수를 제한할 수 있습니다.

자세한 내용은 --pending_instantiations=n도 참조하십시오.

암시적 포함

암시적 포함이 사용 가능하면 컴파일러는 .h 파일에서 선언된 템플릿 엔터티를 인스턴스화하기 위한 정의가 필요할 경우 해당 .cc 파일을 암시적으로 포함시켜 정의에 대한 소스 코드를 얻을 수 있습니다. 예를 들어 템플릿 엔터티 ABC::fxyz.h 파일에 선언되어 있고 컴파일에서 ABC::f의 인스턴스화가 필요하지만 컴파일로 처리된 소스 코드에 ABC::f의 정의가 나타나지 않는 경우 컴파일러는 xyz.cc 파일이 있는지 확인합니다. 이 파일이 있을 경우 컴파일러는 그 파일이 주 소스 파일의 끝에 포함되어 있는 것처럼 파일을 처리합니다.

컴파일러가 해당 템플릿 엔터티의 템플릿 정의를 찾으려면 템플릿이 선언된 파일의 전체 경로 이름과 파일이 시스템 include 구문(예: #include <file.h>)을 사용하여 포함되었는지 여부를 알아야 합니다. 이 정보는 #line 지시문이 있는 사전 처리된 소스에서는 사용할 수 없습니다. 결과적으로 컴파일러는 #line 지시문이 있는 소스 코드에 대해 암시적 포함을 시도하지 않습니다.

컴파일러는 정의 파일 접미사 .cc.CC를 찾습니다.

명령 행 옵션 --implicit_include--no_implicit_include를 사용하여 암시적 포함 모드를 설정하거나 해제할 수 있습니다.

암시적 포함은 파일의 정상적인 컴파일 중, 즉 -E 명령 행 옵션을 사용하지 않을 때에만 수행됩니다.

자세한 내용은 명령 행 옵션을 참조하십시오.

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential