5

이것은 매우 어리석은 질문이지만 확실해야합니다. 예 : 헤더 파일에 클래스 선언이있었습니다.조건부 컴파일 (ifndef)에 관한 간단한 질문

#ifndef file_H 
#define file_H 

class ex{ 
private: 

public: 
}; 

#endif 

와 내가했던 동일한 파일에 메소드 정의를 작성하는 데 필요한 봤는데, 내 질문은 그냥 클래스 선언 이후 어디에 "#endif // 이는 것은"유지 않습니다 또는 그것은 가는가 클래스 메서드 정의 뒤에 내 파일의 끝에?.

답변

6

파일의 끝에.

#ifndef 패턴의이 양식의 목표는 동일한 선언 또는 정의가 컴파일 단위에 두 번 나타나는 상황을 방지하기위한 것입니다.

이것은 C 파일에 여러 개의 H 파일이 포함될 수 있기 때문에 수행됩니다.이 파일은 체인의 어딘가에 동일한 파일이 포함될 수 있습니다. 이러한 프리 프로세서를 사용하지 않았다면 H 파일의 복사본을 여러 개 만들 수 있습니다. 이렇게하면 여러 복사본을 가질 수 있지만 선행 처리기는 첫 번째 발생 이후 모든 것을 무시합니다.

두 번 이상 정의 할 필요가 없으므로 메서드 정의를 헤더 파일에 배치해야하는 경우 #endif 안에 넣습니다.

+0

대단히 감사합니다. – silent