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