헤더의 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
No Trackback , 2 Comments
RSS :
http://avej.com/textcube/rss/response/13

Trackback URL : http://avej.com/textcube/trackback/13

Comments List

  1. 물독 2009/07/27 16:08 # M/D Reply Permalink

    avej.com은 가끔 들어와보긴 했지만, 블로그로 바뀐 것은 처음보는군요. ^-^);;

    하여간. 저도 include 규칙은 안책임 의견에 전적으로 동의하는데.. 팀내에 다른 의견을 가지고 계신 분이 있어서 답답하네요. ㅋㅋ
    설득시킬 자신도 없고...

    1. 슴갈 2009/07/28 01:11 # M/D Permalink

      사실 이런 내용은 답이 없는 것이긴 한데, 이럴 때는 가장 보편적으로 사용하는 방법을 따라야 하지 않나 생각합니다만.... 그 보편적인 것까지 무시를 하기 때문에 문제이지요.

Leave a comment
[로그인][오픈아이디란?]
« Previous : 1 : ... 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : ... 36 : Next »

블로그 이미지

GP2X WIZ와 CAANNO와 bada용 게임 개발을 하자

- 슴갈

Notices

Archives

Authors

  1. 슴갈

Recent Trackbacks

Calendar

«   2012/02   »
      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      

Site Stats

Total hits:
36068
Today:
17
Yesterday:
44