programing

C의 소스 파일과 헤더 파일의 근본적인 차이점은 무엇입니까?

javaba 2022. 8. 3. 22:56
반응형

C의 소스 파일과 헤더 파일의 근본적인 차이점은 무엇입니까?

저는 C의 소스 파일과 헤더 파일을 어떻게 구분해야 하는지 잘 모르겠습니다.같은 이름의 파일 세트가 2개 있는 프로젝트를 자주 볼 수 있습니다(확장자는 소스를 나타내고 다른 확장자는 헤더 파일을 기부합니다).

이러한 이해 부족으로 라이브러리를 작성할 때 파일 확장자를 선택할지 망설이며 클래스 및 클래스 메서드 코드를 모두 하나의 파일로 정리했습니다.

헤더에 무엇이 있어야 하며 소스 파일에 무엇이 있어야 합니까?이 분리는 어떻게 구현합니까?

기술적인 차이는 없습니다.컴파일러는 기꺼이 당신이 다음을 포함하도록 허락할 것입니다..c 할 수 있습니다..h파일을 직접 제출해 주세요.

하지만 문화적으로 큰 차이가 있습니다.

  • 선언(프로토타입)이 들어갑니다..h.hfile은 대응하는 에 실장되어 있는 것에 대한 인터페이스입니다..cfilename을 클릭합니다.

  • 정의가 들어갑니다..c파일입니다.이러한 파일은, 에 지정되어 있는 인터페이스를 실장합니다..hfilename을 클릭합니다.

은 'A'라는 입니다..h은 (파 (통통통통통통통통통 ( (가 될 수 .#include를 여러 단위로 한다(d).c파일)을 클릭합니다.에서 함수를 정의하는 경우.h의 파일, 여러 개의 파일, 여러 개의 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, 파일, , 파일..o여러 개의 정의된 기호에 대해 링커가 불만을 제기합니다.에 정의가 안 죠..h이치노

가 에 되어 있는 .c 파일링, 파일링, 다른 파일링, 파일링, 파일링, 파일링, 파일링, 파일링, 파일링, 다른 파일링, 파일링, 파일링, 파일링, 등..c그 함수의 ..cfiles a a a a a a a a a a a 에 넣는 거예요..h , , , , 입니다.#include네, 네, 네. 이 할 수 있습니다..c하지만 많은 코드 중복과 명백한 혼란으로 이어집니다.

가 에 되어 있는 .c다른 파일에서는 사용하고 싶지 않습니다..c헤더에 선언할 필요가 없습니다.으로 그 .c를 일로 . 이 、 을 、 을을static다른 파일에 있는 동일한 이름의 함수와 충돌하지 않습니다.

헤더에 무엇이 있어야 하며 소스 파일에 무엇이 있어야 합니까?

일반적으로 헤더에는 다음 중 하나 이상이 포함됩니다.

  • 함수 선언(정적 제외)
  • 변수 선언(일반적으로 글로벌)
  • 사용자 정의 유형 선언(읽기)struct,union등)
  • 매크로 정의

한편 소스 파일에는 다음이 있습니다.

  • 함수/변수 정의
  • 정적 함수 선언 및 정의(클라이언트에 공개하지 않음)
  • 변수 정의
  • 일부에서는 헤더에 인라인 함수(C99)를 정의하는 것을 선호합니다.

이 분리는 어떻게 구현합니까?

단일 정의 규칙은 여러분의 친구입니다.

라이브러리를 쓰고 있는 경우는, 이것이 클라이언트의 표시입니다.그러니 도움이 되고 그들이 당신의 도서관을 이용할 수 있도록 당신이 할 수 있는 모든 정보를 제공하세요.소스 파일은 일반적으로 바이너리 형식으로 컴파일되어 제공됩니다.

그리고 C는 수업 개념이 없습니다.

.c 파일과 .h 파일의 근본적인 차이는 거의 없습니다(단, 일부 컴파일러는 원시 .h 파일의 컴파일을 거부할 수 있습니다).그 차이는 관습에 의해 더 크다.

일반적으로 .h 파일은 API를 제공하고 .c는 구현을 제공합니다.

따라서 .h 파일에는 .c 파일에 의해 제공되는 설비에 액세스하기 위해 다른 소스 파일에 필요한 내용만 포함됩니다.따라서 .h 파일은 글로벌 함수의 함수 프로토타입, 글로벌 변수 선언(필요한 경우) 및 해당 변수에 의해 사용되는 구조 및 기타 유형을 제공합니다(API에 의해 구조물에 대한 포인터만 필요한 경우 구조를 노출하지 마십시오).

인라인 함수도 종종 .h 파일에 포함되지만 일부 코딩 가이드라인에서는 별도의 확장자(예: .inl)를 사용하는 것을 선호합니다.

기타 모든 함수 구현, 변수의 정의 및 초기화, 로컬(정적) 변수 및 함수의 선언은 .c 파일에 있습니다.

일반적으로 헤더 파일에는 선언이 포함되어 소스 파일에는 코드가 포함되어 있습니다.

소스 파일에 있는 경우A.c소스 파일에 구현된 기능이 필요합니다.B.c, 당신은 단지 다음을 포함합니다.B.h선언을 할 수 있습니다.

언급URL : https://stackoverflow.com/questions/3482948/what-is-the-fundamental-difference-between-source-and-header-files-in-c

반응형