>백엔드 개발 >C++ >C에서 ODR 사용을 구성하는 것은 무엇입니까?

C에서 ODR 사용을 구성하는 것은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-08 11:39:12770검색

What Constitutes an ODR-Use in C  ?

"odr-use"란 무엇인가요?

C의 맥락에서 "odr-use"는 컴파일 중에 엔터티 정의를 제공해야 하는 상황을 의미합니다. . 이 용어는 실제 정의가 필요하지 않은 단순한 선언과 구별됩니다.

인터페이스(헤더 파일)를 분리할 수 있으므로 즉각적인 정의를 제공하지 않고 엔터티를 선언하는 기능은 모듈식 프로그래밍에 매우 중요합니다. 구현(소스 파일)에서. 그러나 컴파일 단위 전체에서 일관된 동작을 보장하기 위해 C 표준은 엔터티를 정의해야 하는 경우에 대한 특정 규칙을 정의합니다.

"odr-use" 정의

C 표준에 따르면, 다음과 같은 경우 엔터티가 "odr-used"입니다.

  • 해당 이름이 잠재적으로 평가된 표현으로 나타나므로 사용할 수 있음을 의미합니다. 실제로 평가되는 표현식에서
  • 선택하지 않더라도 오버로드 해결 중에 후보 함수 집합의 구성원입니다
  • 명시적으로는 아니더라도 순수하지 않은 가상 함수입니다. 호출됨

ODR 사용 및 클래스 템플릿 멤버 함수

클래스 템플릿 컨텍스트에서 멤버 함수는 Odr에 사용되는 경우 인스턴스화됩니다. 즉, 클래스 템플릿이 하나의 컴파일 단위에서 인스턴스화되면 실제로 호출되거나 오버로드 해결의 일부로 사용되는 멤버 함수만 해당 단위에서 인스턴스화됩니다. 다른 멤버 함수는 사용될 때까지 인스턴스화되지 않은 상태로 유지됩니다.

이 동작은 템플릿 멤버의 불필요한 인스턴스화를 방지하는 데 필수적이며, 이를 통해 컴파일 시간을 크게 줄이고 전체 프로그램 효율성을 향상시킬 수 있습니다. 또한 템플릿 디자인의 유연성을 허용하여 사용자가 일반 클래스를 생성하고 특정 요구 사항에 따라 필요한 기능만 인스턴스화할 수 있습니다.

위 내용은 C에서 ODR 사용을 구성하는 것은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.