C에서 헤더 파일의 요점은 무엇입니까?
중복 가능성:
원본 파일당 헤더 수입니다.
C++에서 헤더 파일과 cpp 파일이 있는 이유는 무엇입니까?
C++ - .h 파일에 무엇을 넣어야 합니까?
C에 헤더 파일이 존재하는 유일한 이유는 개발자가 어떤 기능을 사용할 수 있는지, 어떤 인수를 취할 수 있는지를 빠르게 확인할 수 있기 때문입니까?아니면 컴파일러와 관련이 있습니까?
왜 다른 언어는 이 방법을 사용하지 않습니까?저만 그런 건가요, 아니면 두 세트의 기능 정의만 있으면 유지보수가 더 많아지고 오류가 발생할 수 있는 여지가 더 많아지는 것 같습니까?아니면 헤더 파일에 대해 아는 것이 모든 C 개발자가 알아야 하는 것입니까?
사용 가능한 함수와 변수를 선언하려면 헤더 파일이 필요합니다.정의(= .c 파일)에 전혀 액세스할 수 없습니다. C는 라이브러리에서 이진 전용 코드 배포를 지원합니다.
컴파일러는 어떤 기능, 구조 등을 사용할 수 있는지, 그리고 그것들을 어떻게 사용하는지 알기 위해 헤더 파일의 정보가 필요합니다.
모든 언어는 다른 방식으로 정보를 검색하지만 이러한 종류의 정보를 필요로 합니다.예를 들어 Java 컴파일러는 클래스 파일 또는 Java 소스 코드를 검색하여 정보를 검색합니다.
Java-way의 단점은 컴파일러가 이를 수행하려면 메모리에 훨씬 더 많은 정보를 저장해야 한다는 것입니다.오늘날 이것은 큰 문제가 아니지만, 70년대에 C 언어가 만들어졌을 때, 그렇게 많은 정보를 메모리에 저장하는 것은 불가능했습니다.
헤더가 존재하는 주된 이유는 여러 소스 파일 간에 선언을 공유하기 위한 것입니다.
기능이 있다고 칩시다.float *f(int a, int b)
에 .a.c
에서 재사용됩니다.b.c
그리고.d.c
할 수 다음 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "".c
또는 각 소스 파일에서 프로토타입을 반복합니다.
그것도 마찬가지입니다.typedef
이론적으로는 각 소스 파일에서 동일한 선언을 반복할 수 있지만, 이를 제대로 관리하는 것은 정말 악몽이 될 것입니다.
일부 언어는 동일한 접근 방식을 사용합니다.TurboPascal 유닛은 크게 다르지 않은 것으로 기억합니다.당신은 말입니다.use ...
처음에는 다른 곳에서 정의된 기능이 필요하다는 신호를 보냅니다.나는 그것이 델파이에도 전달되었는지 기억할 수 없습니다.
- 라이브러리에 무엇이 있는지 자유롭게 알 수 있습니다.
- 프로그램을 컴파일러용 바이트 크기 청크로 분할합니다.1메가바이트의 C 파일을 동시에 컴파일하는 것은 대부분의 최신 하드웨어가 제공할 수 있는 것보다 더 많은 리소스가 필요합니다.
- 컴파일러 로드를 줄입니다.딥 데이터베이스 엔진에 대한 화면 표시 절차를 알아야 하는 이유는 무엇입니까?지금 필요한 기능만 배우도록 합니다.
- 개인 데이터와 공용 데이터를 분리합니다.이 사용은 자주는 아니지만 C++에서 개인 필드를 사용하는 것을 C에서 구현할 수 있습니다. 각 .c 파일에는 두 개의 .h 파일이 포함되어 있습니다. 하나는 개인 항목 선언이 포함되어 있고 다른 하나는 파일에서 필요한 모든 파일이 포함되어 있습니다.네임스페이스 충돌 가능성이 적을수록 헤르메타화로 인해 안전합니다.
- 대체 구성.Makefile은 사용할 헤더를 결정하며, 동일한 코드는 두 개의 서로 다른 헤더 파일이 주어진 두 개의 서로 다른 플랫폼을 서비스할 수 있습니다.
아마도 더 많을 것입니다.
언급URL : https://stackoverflow.com/questions/2184646/what-is-the-point-of-header-files-in-c
'programing' 카테고리의 다른 글
Oracle 저장 프로시저에 대한 varchar2 입력의 기본 크기는 얼마이며 변경할 수 있습니까? (0) | 2023.07.09 |
---|---|
메서드가 여러 개 중 하나의 인수로 호출되었다고 주장합니다. (0) | 2023.07.09 |
데이터를 제거하지 않고 ggplot 2 축 제한(외부 한계): 확대/축소 (0) | 2023.07.09 |
C에서 메모리 효율적인 이중 링크 목록은 무엇입니까? (0) | 2023.07.04 |
asp.net 에서 데이터 테이블 열의 합계를 계산하는 방법은 무엇입니까? (0) | 2023.07.04 |