C ++의 헤더 파일 및 소스 파일에 대한 자세한 설명
1. C ++ 컴파일 모드
일반적으로 C ++ 프로그램에는 .cpp 파일과 .h 파일의 두 가지 유형이 있습니다. 그 중 .CPP 파일을 C ++ 소스 파일이라고하며 C ++의 소스 코드가 배치됩니다. .H 파일을 C ++ 헤더 파일이라고하고 C ++의 소스 코드가 배치됩니다.
C ++ 언어는 "별도의 컴파일"을 지원합니다. 다시 말해, 프로그램의 모든 내용은 다른 부분으로 나뉘어 다른 .CPP 파일로 배치 될 수 있습니다. .CPP 파일의 물건은 비교적 독립적입니다. 컴파일 (컴파일)시 다른 파일과 통신 할 필요가 없습니다. 대상 파일로 컴파일 한 후에 다른 대상 파일과 링크하면됩니다. 예를 들어, 글로벌 함수 "void a () {}"는 파일 A.CPP에 정의되어 있으며이 기능은 파일 B.CPP에서 호출되어야합니다. 그럼에도 불구하고 A.CPP 및 B.CPP 파일은 서로의 존재를 알 필요가 없지만 별도로 컴파일 할 수 있습니다. 대상 파일로 컴파일 한 후 링크하면 전체 프로그램을 실행할 수 있습니다.
이것은 어떻게 달성됩니까? 프로그램 작성의 관점에서 볼 때 매우 간단합니다. 파일 b.cpp에서 "void a ()"함수를 호출하기 전에 "void a ()"함수를 선언합니다. 첫 번째. 컴파일러가 B.CPP를 컴파일 할 때 심볼 테이블을 생성하기 때문입니다. 볼 수없는 "void a ()"와 같은 기호는이 테이블에 저장됩니다. 다시 연결하면 컴파일러는 다른 객체 파일 에서이 기호의 정의를 찾습니다. 일단 발견되면 프로그램을 원활하게 생성 할 수 있습니다.
여기에 언급 된 두 가지 개념이 있으며, 하나는 "정의"이고 다른 하나는 "선언"입니다. 간단히 말해서, "정의"는 기호를 완전하고 완전한 방식으로 설명하는 것을 의미합니다. 변수 또는 함수, 반환 유형, 필요한 매개 변수 등 "선언"이 기호의 존재를 선언합니다. 즉, 컴파일러가 다른 파일에 정의되어 있음을 알려줍니다. 먼저 사용할 것입니다. 연결하면 다른 곳으로 가서 그것이 무엇인지 알아 내십시오. 정의 할 때 C ++ 구문에 따라 기호 (변수 또는 함수)를 완전히 정의해야하며 선언 할 때이 기호의 프로토 타입 만 작성하면됩니다. 프로그램 내내 기호는 여러 번 기호로 선언 할 수 있지만 한 번만 정의해야합니다. 심볼의 두 가지 다른 정의가 있다면, 컴파일러는 누구를 들어야합니까?
이 메커니즘은 C ++ 프로그래머에게 많은 이점을 제공하며 프로그램 작성 방법으로 이어집니다. 전체 프로그램의 많은 .CPP 파일에서 호출되는 매우 일반적으로 사용되는 기능 "void f () {}"가있는 경우 한 파일 에서이 기능을 정의하고 다른 파일 에서이 기능을 선언하면됩니다. 기능은 처리하기 쉽고, 선언하는 한 문장만을 의미합니다. 그러나 수학적 기능과 같은 기능이 너무 많으면 수백 개의 기능이 있으면 어떨까요? 모든 프로그래머가 모든 기능을 정확하게 기록하고 기록 할 수 있습니까?
2. 헤더 파일이란 무엇입니까?
분명히 대답은 불가능합니다. 그러나 프로그래머가 많은 기능 프로토 타입을 기억하는 데 어려움을 겪는 데 도움이되는 매우 간단한 방법이 있습니다. 먼저 수백 개의 기능의 모든 선언문을 먼저 작성하여 파일에 넣을 수 있습니다. 프로그래머가 필요할 때이 모든 것을 소스 코드로 복사하십시오.