프로그래밍의 모듈화 - 소스코드 파일의 분할 작성

모듈화의 장점
소스파일이 여러개일 때 파일 수정 시 전체 파일을 재컴파일하지 않고 수정된 파일만을 재컴파일하면 된다.

extern
----------------
외부 변수를 가져오는 키워드
file1.c----------
int i=0;
--------------
file2.c-------------
#include
<stdio.h>
extern int i;

int main()
{
    i++;
   
printf("%d \n", i);
    return 0;
}
---------------------

static
int val1;  //static으로 선언된 것은 extern으로 접근불가
int val2;

헤더를
포함시키는 두 가지 방법 ---------------------
#include <stdio.h>
#include
"plus.h"  //현재 소스코드 디렉토리에 있는 plus.h를 삽입하라
#include
"c:\header\lib\plus.h"  //지정 위치에 있는 plus.h를 삽입하라

--------------header
파일의 유용성
자주 사용하는 외부 함수를 여러개 포함시켜야 할 경우
한두개라면 따로 선언을 하거나
extern
add(double a, double b);
와 같은 형태로 선언을 하면 된다.
그러나... 갯수가 많다면 성가시다.

런 경우
#include "calculator.h"와 같은 형태로 포함을 시키면 편하게 사용할 수 있다.

조건부
컴파일--------------------------
#if, #elif, #else, #endif

#if
CONDITION==1
    #include "hello.h"
#elif CONDITION==2
   
#include "hello2.h"
#else
    #include "hello3.h"
#endif

#ifndef
~ #endif -------------------632p
// ifndef = if not define

#ifndef
_COUNT_H_  //_COUNT_H_ 를 정의하지 않았다면
   #define _COUNT_H_ 20 
//_COUNT_H_ 를 정의하고
  int count=0; //int형 변수 count도 정의하고
#endif 
//끝낸다.

_COUNT_H_ 의 값은 의미가 없다. 사용되지 않는다.
단지 count.h가 중복되서 선언되지
않도록 하기 위한 장치다.
 count.h파일이니까 _COUNT_H_ 중복되지 말라고 이상한 이름을 사용한다.
여기저기
서 count.h가 중복 선언되면 에러가 발생한다.

모든 헤더파일은 이런 중복되지 않는 형태로 감싸는게 좋다.

복 호출로 인한 중복선언의 문제를 미연에 방지하기 위해서...

------------------------헤더파일의
형태-----------
#ifdef _COUNT_H_
#define _COUNT_H_

실질적인 헤더파일
내용

#endif
--------------------------------------------