산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C - 헤더 파일

헤더 파일은 확장자가 .h인 파일입니다. 여기에는 여러 소스 파일 간에 공유할 C 함수 선언 및 매크로 정의가 포함되어 있습니다. 헤더 파일에는 프로그래머가 작성하는 파일과 컴파일러와 함께 제공되는 파일의 두 가지 유형이 있습니다.

C 사전 처리 지시문 #include와 함께 헤더 파일을 포함하여 프로그램에서 사용하도록 요청합니다. , stdio.h가 포함된 것을 본 것처럼 컴파일러와 함께 제공되는 헤더 파일.

헤더 파일을 포함하는 것은 헤더 파일의 내용을 복사하는 것과 동일하지만 오류가 발생하기 쉽고 헤더 파일의 내용을 소스 파일에 복사하는 것은 좋은 생각이 아니기 때문에 수행하지 않습니다. 프로그램에 여러 소스 파일이 있습니다.

C 또는 C++ 프로그램의 간단한 방법은 모든 상수, 매크로, 시스템 전체 전역 변수 및 함수 프로토타입을 헤더 파일에 유지하고 필요할 때마다 해당 헤더 파일을 포함하는 것입니다.

구문 포함

사용자 및 시스템 헤더 파일 모두 전처리 지시문 #include를 사용하여 포함됩니다. . 다음 두 가지 형식이 있습니다 -

#include <file>

이 형식은 시스템 헤더 파일에 사용됩니다. 시스템 디렉토리의 표준 목록에서 'file'이라는 파일을 검색합니다. 소스 코드를 컴파일하는 동안 -I 옵션을 사용하여 이 목록에 디렉토리를 추가할 수 있습니다.

#include "file"

이 형식은 자체 프로그램의 헤더 파일에 사용됩니다. 현재 파일이 포함된 디렉토리에서 'file'이라는 파일을 검색합니다. 소스 코드를 컴파일하는 동안 -I 옵션을 사용하여 이 목록에 디렉토리를 추가할 수 있습니다.

작업 포함

#포함 지시문은 현재 소스 파일의 나머지 부분을 계속 진행하기 전에 지정된 파일을 입력으로 스캔하도록 C 전처리기에 지시하여 작동합니다. 전처리기의 출력은 이미 생성된 출력을 포함하고, 그 뒤에는 포함된 파일의 결과가 나오고, 그 뒤에는 #include 뒤에 오는 텍스트의 출력이 포함됩니다. 지령. 예를 들어 다음과 같은 헤더 파일 header.h가 있는 경우 -

char *test (void);

program.c라는 메인 프로그램 다음과 같이 헤더 파일을 사용합니다 -

int x;
#include "header.h"

int main (void) {
   puts (test ());
}

컴파일러는 program.c가 읽을 때와 동일한 토큰 스트림을 보게 됩니다.

int x;
char *test (void);

int main (void) {
   puts (test ());
}

1회용 헤더

헤더 파일이 두 번 포함되는 경우 컴파일러는 해당 내용을 두 번 처리하고 오류가 발생합니다. 이것을 방지하는 표준 방법은 파일의 실제 내용 전체를 다음과 같이 조건부로 묶는 것입니다. −

#ifndef HEADER_FILE
#define HEADER_FILE

the entire header file file

#endif

이 구성은 일반적으로 래퍼 #ifndef로 알려져 있습니다. . 헤더가 다시 포함되면 HEADER_FILE이 정의되어 있으므로 조건부가 false가 됩니다. 전처리기는 파일의 전체 내용을 건너뛰고 컴파일러는 이를 두 번 보지 않습니다.

계산된 포함

때로는 프로그램에 포함할 여러 헤더 파일 중 하나를 선택해야 합니다. 예를 들어, 다양한 종류의 운영 체제에서 사용할 구성 매개변수를 지정할 수 있습니다. 다음과 같이 일련의 조건문을 사용하여 이 작업을 수행할 수 있습니다. -

#if SYSTEM_1
   # include "system_1.h"
#elif SYSTEM_2
   # include "system_2.h"
#elif SYSTEM_3
   ...
#endif

그러나 성장함에 따라 지루해집니다. 대신 전처리기가 헤더 이름에 매크로를 사용할 수 있는 기능을 제공합니다. 이를 계산된 포함이라고 합니다. . #include의 직접 인수로 헤더 이름을 쓰는 대신 , 거기에 매크로 이름을 넣으면 됩니다 -

#define SYSTEM_H "system_1.h"
...
#include SYSTEM_H

SYSTEM_H가 확장되고 전처리기가 #include처럼 system_1.h를 찾습니다. 원래 그렇게 썼습니다. SYSTEM_H는 Makefile에서 -D 옵션으로 정의할 수 있습니다.


C 언어

  1. C 파일 처리
  2. 파이썬 파일 I/O
  3. 자바 파일 클래스
  4. STL 파일 소개
  5. Verilog 파일 IO 작업
  6. C - 파일 I/O
  7. C++ 파일 및 스트림
  8. C# - 파일 I/O
  9. 파이썬 - 파일 I/O
  10. 삼각형 파일이란 무엇입니까?