파일의 분할


외부선언된 변수혹은 함수 이용 : 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



+ Recent posts