C_파일 은. h 파일 과. c 파일 총 결 을 포함 합 니 다.


많은 사람들 이 C 언어의 '파일 포함' 에 대해 낯 설 지 않다. 파일 포함 처 리 는 프로그램 개발 에서 우리 의 모듈 화 프로 그래 밍 에 큰 이익 을 가 져 다 줄 것 이다. 파일 포함 방법 을 통 해 프로그램의 각 기능 모듈 을 연결 시 키 는 것 은 모듈 화 프로 그래 밍 에서 매우 유리 한 수단 이다.
       파일 포함 처리 란 원본 파일 에 파일 포함 명령 을 통 해 다른 원본 파일 의 내용 을 모두 포함 하 는 것 을 말 합 니 다.원본 파일 을 컴 파일 할 때 포 함 된 파일 과 함께 컴 파일 하여 대상 파일 을 생 성 합 니 다.
    많은 사람들 이 초학 때 이것 에 대해 매우 어 지 럽 습 니 다. 어떻게 서 류 를 씁 니까?어떻게 포함 해야만 중 정 의 를 피 할 수 있 습 니까?등등 문제...
 
    사실 이것 은 파일 에 포 함 된 기본 적 인 처리 방법 만 알 면 파일 에 대한 이해 와 응용 을 잘 할 수 있 습 니 다. 내 려 와 서 같이 보 겠 습 니 다.
 
  파일 에 포 함 된 처리 방법:
   우선 여러분 은 잘 알 아야 합 니 다.
  (1) 처리 시간: 파일 포함 도 '\ #' 로 시작 합 니 다 (\ # include). 그러면 예비 프로세서 에 보 여 주 는 것 입 니 다. 즉, 파일 포함 은 컴 파일 예비 처리 단계 에서 처 리 됩 니 다.
  (2) 처리 방법: 사전 처리 단계 에서 시스템 은 자동 으로 \ # include 명령 을 처리 합 니 다. 구체 적 인 방법 은 파일 을 포함 하 는 내용 을 포함 하 는 문장 (\ # include) 에 복사 하여 새로운 파일 을 얻 은 다음 에 이 새로운 파일 을 컴 파일 하 는 것 입 니 다.
 
  이 두 가 지 를 잡 으 면 이 물건 은 어 려 운 것 이 없다.
  일반적인 상황 에서 파일 은 두 가지 로 나 뉜 다. h 파일 과 c 파일 을 포함한다.
1. 물론 이 두 가지 상황 에 대해 서도 위 에서 말 한 방법 에 따라 처리한다.허허, 이 건 말 할 필요 가 없 을 거 야.
2. c 파일 을 포함 하 는 것 과 다 중 파일 프로그램 을 컴 파일 하 는 것 은 다르다.   다 중 파일 프로그램: 원본 파일 을 컴 파일 할 때 여러 파일 을 컴 파일 하고 연결 하여 실행 가능 한 파일 을 만 드 는 것 입 니 다.   c 파일 포함: 위 에서 말 한 법칙 에 따 르 면 여러 파일 을 하나의 파일 로 합 쳐 컴 파일 하 는 것 입 니 다.
다음은 예 를 들 어 보 겠 습 니 다. (1). c 파일 포함:

     
     
     
     
1: //file1: main.c

     
     
     
     
2: #include

     
     
     
     
3: #include "fun.c"

     
     
     
     
4: int main()

     
     
     
     
5: {

     
     
     
     
6: int a=5,b=19;

     
     
     
     
7: c = a;

     
     
     
     
8: sun(a,b);

     
     
     
     
9: printf( "c=%d
"
,c);

     
     
     
     
10: return 0;

     
     
     
     
11: }

     
     
     
     
12: //end of file1
   1: //file2: fun.c
   2: int c=0;
   3: void sun(int a, int b)
   4: {
   5:     printf("a+b=%d
"
,a+b);
   6:     c=0;
   7:     printf("c=%d
"
,c);
   8: }
   9: //end of file2   
  10:   

이 예 는. c 파일 을 포함 하 는 방법 으로 이 루어 졌 다.
 
컴 파일 할 때, 직접 main. c 파일 을 컴 파일 합 니 다. 예비 처리 장 치 는 먼저 fun. c 파일 의 내용 을 main. c 에 복사 한 다음 에 새로운 main. c 를 컴 파일 합 니 다.
컴 파일 명령:
    gcc main.c -o main
여기 서 fun. c 를 컴 파일 하지 않 았 지만 최종 main 실행 가능 프로그램 이 생 성 되 었 습 니 다.
명령 을 통 해 예비 처리 결 과 를 관찰 할 수도 있다.
컴 파일 명령:   gcc - E main. c - o main. cpp 는 main. cpp 파일 끝 에 다음 코드 를 볼 수 있 습 니 다.
   1: //main.cpp   
   2: 931 # 2 "main.c" 2
   3: 932 # 1 "fun.c" 1
   4: 933 //     fun.c     
   5: 934 int c=0;
   6: 935 void sun(int a, int b)
   7: 936 {
   8: 937  printf("a+b=%d
"
,a+b);
   9: 938  c=0;
  10: 939  printf("c=%d
"
,c);
  11: 940 } 
  12:     //   main  
  13: 941 # 3 "main.c" 2
  14: 942 int main()
  15: 943 { 
  16: 944  int a=5,b=19;
  17: 945  c = a;
  18: 946  printf("c=%d
"
,c);
  19: 947  sun(a,b);
  20: 948  printf("c=%d
"
,c);
  21: 949  return 0;
  22: 950 }

이 를 통 해 알 수 있 듯 이 fun. c 파일 의 내용 을 main 함수 에 추가 하기 전에 새로운 파일 을 컴 파일 하여 최종 실행 가능 한 프로그램 을 만 드 는 것 입 니 다.
 
(2) 다 중 파일 프로그램 컴 파일:
마찬가지 로 위의 예 입 니 다. main. c 의 "\ # include" fun. c "주석 을 지우 고" extern int c; "라 는 말 을 붙 입 니 다. c 변 수 는 다른 파일 (fun. c) 에서 정의 되 기 때 문 입 니 다.
   1: //file1:  main.c 
   2: #include 
   3: //#include "fun.c"  //   
   4: extern int c;        //     
   5: int main()
   6: {
   7:     int a=5,b=19;
   8:     c = a;    
   9:     sun(a,b);
  10:     printf("c=%d
"
,c);
  11:     return 0;
  12: }
  13: //end of file1
  14:  
  15:  
  16: //file2: fun.c
  17: int c=0;
  18: void sun(int a, int b)
  19: {
  20:     printf("a+b=%d
"
,a+b);
  21:     c=0;
  22:     printf("c=%d
"
,c);
  23: }
  24: //end of file2  

 
이번에 도 위의 방법 으로 main. c 만 컴 파일 하면 오류 가 발생 합 니 다. 변수 c 와 함수 sun 이 main. c 에서 정의 되 지 않 았 기 때문에 컴 파일 할 때 fun. c 를 함께 컴 파일 해 야 합 니 다.
컴 파일 명령:   
    gcc -c main.c -o main.o                 #main. c 컴 파일    gcc -c fun.c -o fun.o                       #컴 파일 fun. c    gcc main.o fun.o -o main              #main. o fun. o 로 main 생 성
       여기까지. c 파일 과 다 중 파일 프로그램 을 포함 한 본질 적 인 차 이 를 이해 하 셨 을 겁 니 다 ~ ~
자, 여러분 은 이 두 가지 방법의 장단 점 을 생각 하지 않 고 부족 한 점 만 적 었 습 니 다.
1. c 파일 을 포함 하 는 방법: '재정의' 가 생기 기 쉽다. 만약 에 한 프로젝트 에 여러 개의 파일 이 한 개 를 동시에 포함한다 면 이 포 함 된 파일 의 내용 은 여러 개의 파일 로 복사 되 고 이 파일 을 포함 하 는 모든 파일 에 포 함 된 변수 와 함 수 를 정의 하 는 것 과 같다. 그러면 링크 할 때 '재정의' 가 생 긴 다.잘못
2. 다 중 파일 을 분리 하여 컴 파일 하 는 방법: 이것 이 비교적 좋 습 니 다. '재 정의' 와 같은 문제 가 발생 하기 쉽 지 않 습 니 다. 이것 도 우리 가 가장 자주 사용 하 는 방법 입 니 다. 그러나 상기 예 에서 처럼 직접 사용 하 는 것 이 아니 라 '헤더 파일' 을 사용 하여 각. c 파일 을 연결 하 는 것 입 니 다.
     위의 이 예 는 main. c 에 'extern int c' 라 는 성명 을 더 해 야 한 다 는 것 을 알 수 있 습 니 다. 포 함 된 파일 이 많 으 면?전역 변수 가 많 으 면?이것 괜찮아요?대답 은 긍정!방법 은 그것 에 게 머리 파일 을 쓰 는 것 이다.
 
       다음은 헤더 파일 을 사용 하여 이 예 를 실현 하 는 방법 을 살 펴 보 겠 습 니 다.

     
     
     
     
1: //file1: main.c

     
     
     
     
2: #include

     
     
     
     
3: #include "fun.h" //fun.c fun.h

     
     
     
     
4: //extern int c; //

     
     
     
     
5: int main()

     
     
     
     
6: {

     
     
     
     
7: int a=5,b=19;

     
     
     
     
8: c = a;

     
     
     
     
9: sun(a,b);

     
     
     
     
10: printf( "c=%d
"
,c);

     
     
     
     
11: return 0;

     
     
     
     
12: }

     
     
     
     
13: //end of file1

 

     
     
     
     
1:  

     
     
     
     
2: //file2: fun.c

     
     
     
     
3: #include "fun.h"

     
     
     
     
4: int c=0; // c

     
     
     
     
5: void sun( int a, int b) // sun()

     
     
     
     
6: {

     
     
     
     
7: printf( "a+b=%d
"
,a+b);

     
     
     
     
8: c=0;

     
     
     
     
9: printf( "c=%d
"
,c);

     
     
     
     
10: }

     
     
     
     
11: //end of file2

 

     
     
     
     
1: //file3: fun.h

     
     
     
     
2: extern int c; // c

     
     
     
     
3: void sun( int a, int b); //sun()

     
     
     
     
4: //end of file3

이렇게 다시 한 번 보 겠 습 니 다. fun. c 에서 정의 할 함수 나 변 수 를 사용 할 파일 에 fun. h 파일 만 포함 하면 됩 니 다. 그 렇 죠?허허, 당연 하지...
사전 처 리 를 할 때 fun. h 의 내용 을 포함 하 는 파일 에 복사 합 니 다. 복 사 된 내용 은 이름 일 뿐 정의 가 아 닙 니 다. 따라서 복 사 된 것 이 아무리 많아 도 '재 정의' 오류 가 발생 하지 않 습 니 다.
허허, 그래, 바로 이렇다. 이것 이 바로 첫 번 째 서류 가 우리 에 게 다시 오 는 좋 은 점 이다.
 
앞에서 말 한 헤더 파일 의 방법 도 모듈 화 프로 그래 밍 에서 매우 유리 한 수단 이다.
        같은 기능 을 c 파일 에 기록 하면 그들 을 하나의 모듈 로 그 을 수 있 고, 또 대응 하 는. h 파일 을 써 서 설명 할 수 있 습 니 다.이렇게 한 후에 이 모듈 을 사용 할 때 이 두 파일 을 프로젝트 에 추가 하고 모듈 내 함수 나 변 수 를 사용 할 파일 에. h 파일 을 포함 하면 됩 니 다.
         
        실제 적 인 예 를 들 어 싱글 칩 마이크로컴퓨터, ARM 또는 다른 내장 형 개발 에서 모든 플랫폼 자체 에 다양한 하드웨어 모듈 이 있 을 수 있 습 니 다. 사용 할 때 해당 하 는 드라이버 를 써 야 합 니 다. 그러면 각 하드웨어 모듈 의 드라이버 를 하나의 모듈 로 할 수 있 습 니 다 (예 를 들 어 lcd 구동 은 대응 하 는 lcd. c 와 lcd. h, IIC 구동 은 I2C. c 와 I2C. h 등).특정한 모듈 에 구체 적 으로 사용 할 때 해당 하 는 c 와 h 파일 을 프로젝트 에 추가 하고 파일 에 맞 는. h 파일 을 포함 하면 됩 니 다.
 
그래서 헤더 파일 에 대한 쓰기 개인.
다음 과 같은 몇 가 지 를 요약 한다.
(1) 대응 하 는. c 파일 에 변수, 함수 의 정의 (2) 에 대응 하 는. h 파일 에 변수, 함수 의 성명 (3) 데이터 형식의 정의 와 매크로 정의 가 있 으 면 쓴 헤더 파일 (. h) 에 (4) 헤더 파일 에 반드시 \ # ifndef... \ # define... \ # endif 와 같은 중복 방지 문구 (5) 모듈 의. c 파일 에 자신의. h 파일 이 포함 되 어 있 는 것 을 잊 지 마 세 요.

좋은 웹페이지 즐겨찾기