C/C++ 에서 헤더파일 include 순서와 함수 정의 순서는 어떻게 하세요?
글쓴이: trymp / 작성시간: 토, 2016/03/19 - 11:35오전
C/C++ 을 계속 프로그래밍 했었는데, 만들다보면 헤더 순서가 꼬이는 경우가 생깁니다.
가령 aa.h 의 class 나 struct 가 bb.h 를 참조하고
bb.h 의 class 나 struct 가 aa.h 를 참조하고 이렇게 서로 참조하면 꼬이는데요.ㅠ
이런 경우 짜증이 많이 나더라구요.
다른분들 헤더 include 순서를 어떻게 잡으시는지 궁금합니다.
그리고 함수 같은 것을 정의 할때 순서가 따로 있으신가요?
callee 보다 caller 를 항상 아래에 놓으시나요?
별로 생각하지 않고 있다가 좀 궁금해지내요.
기준이나 노하우가 있으신 분들 좀 알려주시면 감사하겠습니다.
Forums:


의견
class A와 class B 사이에 인터페이스를 만듭니다.
//////////////////////////////////////////////// // A.h class A { int value; public: // put method here } //////////////////////////////////////////////// // B.h class B { int value; public: // put method here } //////////////////////////////////////////////// // ABInterface.h #include "A.h" #include "B.h" // make interface function int function(A &a, B &b); // make interface class class ABManager { public: int method(A &a, B &b); }이후 ABInterface.h만 포함하여 쓰면 A 헤더와 B 헤더의 순서를 생각할 일이 줄어듭니다.
저는 이렇게 생각했습니다.
객체(struct든 class든)를 pointer로
객체(struct든 class든)를 pointer로 참조를 한다면
전방선언으로 충분합니다. 헤더 순서도 물론 관계 없구요.
in a.h
/* 구조체 b에 대한 전방선언 */ typedef struct _b_s b_s; typedef struct _a_s { b_s* b; .... } a_s;in b.h
/* 구조체 a에 대한 전방선언 */ typedef struct _a_s a_s; typedef struct _b_s { a_s* a; .... } a_s;서로가 서로에 대해서 참조하고있어도 전혀 문제가 없는 코드죠.
두분 정말 감사합니다..ㅎㅎ
두분 정말 감사합니다..ㅎㅎ
댓글 달기