파일의 분할
외부선언된 변수혹은 함수 이용 : extern
소스코드를 나누어서 작성할때 , 컴파일러는 파일단위로 컴파일을 진행하기때문에 , 같은 파일에 선언되어있지않은 변수나 함수를 이용하려면 extern 키워드를 이용해야한다.
extern int num; // int 형 변수 num 이 외부에 선언되어있다
extern void increment(void) // void increment(void) 함수가 외부에 선언되어있다.
다른파일에서 접근을 못하게 막고싶을때 : static
static 지역변수는 함수를 빠져나가도 사라지지않는 특성 ( 전역변수적 특성 ) 을 가지고있는데 , static 전역변수는 외부파일에서의 접근을 허용하지 않는 특징이 있다 .
static int num ;// num 변수의 접근범위를 파일 내부로 제한한다.
static void increment(void); // void increment(void) 함수의 접근범위를 파일 내부로 제한한다.
헤더파일의 디자인과 활용
헤더파일을 include 하는 두가지 방법
#include<헤더파일이름> : 표준헤더파일이 저장되어있는 디렉터리에서 파일을 찾는다.
#include "헤더파일이름" : 소스파일이 저장되어있는 디렉터리에서 헤더파일을 찾는다. ( 프로그래머가 정의하는 헤더파일을 포함시킬때 사용하는방식)
절대경로지정 ( 기기마다의 호환성 문제로 거의 사용하지않는다)
#include "C:\Cpower\myproject\header.h" //windows 상에서의 절대경로지정
상대경로지정
#include "Release\header0.h" // 소스파일이 있는 디렉터리의 하위디렉터리인 Release 디렉터리에 존재하는 header0.h를 찾아서 포함
#include "...\CProg\header1.h" //소스파일이 있는 디렉터리의 한단계 상위디렉터리에 존재하는 CProg 디렉터리 안에서 header1.h를 찾아서 포함
헤더파일에 담으면 좋은것
구조체
int num;
int GetNum(void);
# define PI 3.14
등의 선언을 포함시키면 좋다
헤더파일의 중복삽입문제
헤더파일이 중복삽입되었을때 , 문제가되는 코드들이있다. ex) 구조체
조건부 컴파일을 활용하면 중복삽입의 문제를 해결할 수 있다.
#ifndef __STDIV2_H__
#define __STDIV2_H__
typedef struct div
{
int quotient;
int remainder;
}Div;
#endif
'C언어 > 열혈C' 카테고리의 다른 글
C : Chapter -22 매크로와 선행처리기 (0) | 2018.04.07 |
---|---|
C : Chapter -21 메모리 관리와 메모리의 동적할당 (0) | 2018.04.04 |
C : Chapter -20 파일 입출력 (0) | 2018.03.31 |
C : Chapter -19 공용체와 열거형 (0) | 2018.03.30 |
C : Chapter -18 구조체와 사용자 정의 자료형 (0) | 2018.03.27 |