헤더의 include 순서

어떤 순서로 배열해도 잘 굴러가기만 할 헤더의 배열 순서이지만 나는 아래와 같은 방법을 사용하고 있다

1. 그 Application의 헤더
2. 사용
Library의 헤더
3. 표준 헤더 

만약 app라는 이름의 application avejlib이라는 이름의 Library를 사용하고, 거기에다가 표준 입출력을 사용하고 있을 때 다음과 같이 사용한다는 것이다

#include app_type.h
#include app_traits.h
#include app_util.h
#include avejlib_renderer.h
#include avejlib_audio.h
#include avejlib_device.h
#include <stdio.h>
#include <vector>
#include <algorithm> 

이렇게 하면 실제 디펜던시와는 반대로 배열이 되는데, 이렇게 했을 때 library(주로 자체로 만든 것)가 제대로 디펜던시가 설정되었는지를 컴파일 시에 알 수 있기 때문이다.

예를 들어 apputil.h <vector>에 디펜던시가 있는데 그것을 내부적으로 해결해 놓지 않으면 위의 경우는 에러가 난다. 그렇게 하는 이유는 ‘어떠한 헤더도 그 헤더를 사용하기 위한 전제 조건을 알 필요가 없어야 한다’라고 생각하기 때문이다. 내가 “apputil.h”를 A()라는 함수를 쓰기 위해 include 했는데, apputil.h”의 B()라는 함수 때문에 생긴 <vector>에 대한 디펜던시를 알아야 할 필요가 없기 떄문이다

참고로 구글의 coding guideline은 이와 반대이며 그들도 그들 나름대로의 이유 때문에 그렇게 했을 것이다.

Posted by 안영기

2009/04/26 07:53 2009/04/26 07:53
Response
0 Trackbacks , 2 Comments
RSS :
http://smgal.ismine.net/tc_191/blog1/rss/response/13

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

« Previous : 1 : ... 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : ... 50 : Next »

블로그 이미지

게임 개발을 기반으로 한, 잡다한 개발 기록 저장소

- 안영기

Notices

Archives

Authors

  1. 안영기

Recent Comments

Recent Trackbacks

Calendar

«   2024/10   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Site Stats

Total hits:
247392
Today:
2
Yesterday:
32