C의 "odr-use" 이해
C에서는 "단일 정의 규칙"(ODR) 개념이 여러 컴파일 단위로 선언된 엔터티에는 정의가 하나만 존재합니다. 그러나 정의가 필요한 시기를 결정하는 것은 혼란스러울 수 있습니다. "odr-use"라는 용어는 이러한 맥락에서 사용됩니다.
C 표준에 따르면 변수나 함수는 odr-used입니다.
이 정의는 약간 추상적이므로 단순화하겠습니다. Odr-use는 본질적으로 엔터티가 프로그램 어딘가에 정의되어야 하는 방식으로 사용된다는 것을 의미합니다. 여기에는 함수 호출이나 변수 액세스와 같은 실제 사용법뿐만 아니라 오버로드 해결 후보와 같은 잠재적인 사용법도 포함됩니다.
클래스 템플릿 멤버 함수의 경우 인스턴스화( 따라서 정의됨) Odr-사용되는 경우. 이는 호출되어야 하거나 클래스 자체가 해당 멤버 함수가 가상인 상태로 인스턴스화되어야 함을 의미합니다.
표준에서는 불필요한 인스턴스화를 방지하기 위해 이 원칙을 사용합니다. 예를 들어, std::list::sort 함수에는 연산자< 그 요소에. 연산자를 지원하지 않는 요소 유형으로 목록을 선언하면 sort가 호출되지 않는 한 멤버 함수가 인스턴스화되지 않습니다.
누락과 관련된 오류를 피하려면 odr-use를 이해하는 것이 중요합니다. 여러 컴파일 단위의 정의 및 여러 정의. 이러한 규칙을 따르면 프로그래머는 강력하고 유지 관리가 가능한 C 코드를 작성할 수 있습니다.
위 내용은 C에서 ODR 사용이란 무엇이며 언제 정의가 필요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!