C ++에서 .inl 파일의 중요성
.inl 파일에 선언을하면 어떤 이점이 있습니까? 언제 똑같이 사용합니까?
.inl파일은 필수가 없습니다 컴파일러에 특별한 의미가 없습니다. 코드를 읽을 수있는 사람에게 힌트를 제공하는 코드 구조화 방법 일뿐입니다.
.inl두 가지 경우에 파일을 사용 합니다.
- 인라인 함수의 정의.
- 기능 템플릿의 정의.
두 경우 모두, 나는 다른 파일이 포함 된 헤더 파일에서 나는 함수의 선언을 넣어 헤더 파일의 맨 아래에 파일을.#include.inl
인터페이스와 구현을 분리하고 헤더 파일을 좀 더 쉽게 읽을 수 있기 때문에 마음에. 세부 사항에 구현 관심이있는 경우 .inl파일을 열고 읽을 수 있습니다. 그렇지 않다면 그럴 필요가 없습니다.
Nick Meyer의 말이 맞습니다. 컴파일러는 포함하는 파일의 언어를 신경 쓰지 언어입니다. 따라서 ".h", ".hpp", ".hxx", ".hh", ".inl", ".inc"등은 파일에 포함되어야하는 내용을 명확하게하기위한 간단한 규칙입니다.
가장 좋은 예는 파일가 전혀없는 STL 헤더입니다.
일반적으로 ".inl"파일에는 인라인 코드 가 포함되어 있습니다 ( ".inl"확장자).
이러한 파일 ".inl"은 파일 헤더 코드 간에 종속성 주기가있을 때 필요 합니다.
예를 들면 :
// A.hpp
struct A
{
void doSomethingElse()
{
// Etc.
}
void doSomething(B & b)
{
b.doSomethingElse() ;
}
} ;
과 :
// B.hpp
struct B
{
void doSomethingElse()
{
// Etc.
}
void doSomething(A & a)
{
a.doSomethingElse() ;
}
} ;
순방향 선언을 사용하는 것을 포함하여 할 방법이 없습니다.
해결은 정의와 구현을 두 종류의 헤더 파일로 나누는 것입니다.
hpp헤더 / 정의inl구현 헤더 용
다음 예제로 나니다.
// A.hpp
struct B ;
struct A
{
void doSomethingElse() ;
void doSomething(B & b) ;
} ;
과 :
// A.inl
#include <A.hpp>
#include <B.hpp>
inline void A::doSomethingElse()
{
// Etc.
}
inline void A::doSomething(B & b)
{
b.doSomethingElse() ;
}
과 :
// B.hpp
struct A ;
struct B
{
void doSomethingElse() ;
void doSomething(A & a) ;
} ;
과 :
// B.INL
#include <B.hpp>
#include <A.hpp>
inline void B::doSomethingElse()
{
// Etc.
}
inline void B::doSomething(A & a)
{
a.doSomethingElse() ;
}
이렇게하면 자신의 소스에 필요한 ".inl"파일을 포함 할 수 있고 제대로 작동합니다.
다시 말하지만, 포함 된 파일의 접미사 이름은 중요하지 않고 용도 만 중요합니다.
아무도 주변하지 않았기 때문에 :
.inl 파일을 사용하여 인라인 함수를 저장하면 속도를 높이는 유용합니다.
선언이 필요한 곳에 선언 (.h) 만 포함하고 필요한 곳에 인라인 구현 (.inl) 만 포함하는 경우 (예 : .h가 아닌 .cpp 및 기타 .inl 파일에서만 가능) 헤더 종속성에 유익한 효과.
이것은 상호 작용하는 클래스가 많은 대규모 프로젝트에서 중요한 승리가 될 수 있습니다.
내 경험상 .inl 파일은 인라인 함수를 정의하는 데 사용됩니다. .inl 파일에있는 경우 파일을 헤더에 포함하여 인라인 함수를 가져오고 .c 파일에 포함하여 일반 함수 정의를 가져올 수 있습니다.
이렇게하면 동일한 소스가 인라인 함수를 지원하지 않는 컴파일러와 지원하는 컴파일러에서 더 쉽게 작업 할 수 있습니다.
일반적으로 모든 C ++ 컴파일러가 인라인 함수를 지원하므로 C ++ 코드에서는 자주 사용되지 않는 직선 C 코드와 함께 사용됩니다.
인라인 코드가 포함 된 "헤더"파일의 명명 규칙 일 뿐이라고 생각합니다. .h 파일에는 정의가 포함될 수 있고 .inl 파일에는 템플릿에 필요한 인라인 코드가 포함됩니다.
파일의 목적을 명확히하기위한 명명 규칙보다 더 많은 것이 있다고 믿지 않습니다.
참고 URL : https://stackoverflow.com/questions/1208028/significance-of-a-inl-file-in-c
'IT' 카테고리의 다른 글
| 발행 / 구독 패턴 (JS / jQuery에서)을 사용하는 이유는 무엇입니까? (0) | 2020.08.21 |
|---|---|
| IOS에서 신속하게 내 응용 프로그램의 화면 잠금을 방지하는 방법 (0) | 2020.08.21 |
| IIf ()와 If의 성능 차이 (0) | 2020.08.21 |
| android에서 두 이미지를 기계하여 imageview를 설정하십시오. (0) | 2020.08.21 |
| 특정 커밋을 위해 GitHub에서 .zip을 다운로드하는 방법은 무엇입니까? (0) | 2020.08.21 |