|
2009년 02월 13일
전방 선언에 대해서 알아보았습니다. 웹에 게시 된 글들을 여러개 살펴 보았는데 아래의 이유에 의해서 사용된다는 결론을 내리게 되었습니다. 불필요한 헤더 파일이 복잡하게 포함되는 것을 방지하며, Compile 속도를 향상 시켜줍니다.
![]() 아래는 CManager클래스의 헤더파일 내용입니다. #pragma once #include "ModuleOne.h" #include "ModuleTwo.h" class CManager CUser::CUser(void) CUser::~CUser(void) 이는 곧 컴파일 속도를 저해하는 원인이 됩니다. 이유에 대해서 예를 들면, CModuleTwo 클래스를 수정했을 경우 이를 직접적으로 사용하고 있는 CManager 클래스만 함께 컴파일 되면 되는데 이를 직접적으로 사용하고 있지 않음에도 불구하고 CManager클래스의 헤더에 CModuleTwo클래스의 헤더가 포함되어 있기 때문에 CUser 클래스까지 함께 컴파일이 되어버리기 때문입니다. 아래는 위 코드를 컴파일 한 후, CModuleTwo 클래스를 수정하여 다시 컴파일 한 결과 입니다. ModuleTwo.cpp와 Manager.cpp와 함께 User.cpp도 컴파일 되는 것을 확인 하실수 있습니다. ------ Build started: Project: ForwardDeclaration, Configuration: Debug Win32 ------ Compiling... 그럼 위의 문제의 코드를 전방선언으로 고쳐주면 어떻게 될까요? 아래의 코드를 보면 전방선언을 통해 CModuleOne클래스와 CModuleTwo클래스의 헤더를 CManager 클래스의 cpp파일에 숨겼기 때문에 CUser클래스에서는 불필요하게 CModuleOne클래스와 CModuleTwo클래스의 헤더파일이 포함 되는 것을 방지하고 있는 것을 알 수 있습니다. 아래는 CManager클래스의 헤더파일 내용입니다. #pragma once class CModuleOne;
CUser::~CUser(void) 이는 컴파일 속도의 향상으로 이어집니다. 전방선언을 하지 않고 헤더파일을 직접 포함하고 CModuleTwo 클래스를 수정한 후 컴파일 할 때와 동일하게 전방선언을 하고 CModuleTwo 클래스를 수정한 후 컴파일을 해 보았습니다. 결과는 아래와 같습니다. 헤더파일을 직접 포함한 경우는 User.cpp도 함께 컴파일 되었었지만 이번에는 컴파일에서 제외 되었습니다. ------ Build started: Project: ForwardDeclaration, Configuration: Debug Win32 ------ Compiling... 위 예제는 간단한 클래스로만 이루어졌기 때문에 헤더파일이 복잡하게 얽히는 문제와 컴파일 속도의 향상에 대한 논점이 크게 부각이 되지 않겠지만 이를 실제 프로젝트에 연결지어 생각해 보면 전방선언의 효율성에 대해서 알 수 있습니다. * 참고 사이트 김재호의 디지털보단 아날로그 - 전방선언과 컴파일 의존성 |
ABOUT
![]() 새로운 도전을 위해 약 1년간 자리를 비웁니다. 그 동안 블로그에 방문해 주신 분들께 진심으로 감사드립니다. 1년 뒤 .NET 관련 양질의 정보를 가지고 돌아오겠습니다. by greenfrog 메모장
카테고리
최근 등록된 덧글
잘 봤습니다. 그런데 저 상태에서 하얀..
by 비니 at 07/24 안녕하세요. 내용이 좋아서 참고합니다... by 김현수 at 07/09 1년뒤....너무 멀군요... 도전 성.. by rince at 06/26 좋은 내용이네요 많은 도움이 되었습니다.. by 이준배 at 06/04 좋은 정보 감사합니다^^ by 코즈 at 06/03 사랑합니다 by 최곱니다 at 05/12 좋은정보 감사합니다. by 이창열 at 05/11 좋은 정보 잘보고갑니다 그리고 제가 .. by Cherry at 04/27 답글이 늦어서 죄송합니다. 요즘 이래저.. by greenfrog at 04/20 좋은 정보 잘보고 갑니다^^ 도움이 많.. by 토끼 at 04/15 좋은 정보 감사합니다. 다음에 써먹어야.. by neptunex at 03/26 ㅎㅎ 잘 찾아보면 재미있는 플러그인 많.. by greenfrog at 03/22 예전에는 일부러 에러내고 그거찾아가는.. by 규학 at 03/13 아 ~ 그 일이었군요 ^^ 글 잘 봤어요 .. by greenfrog at 02/21 하나은행과 정말 생동감 넘쳤지요 ^^ by rince at 02/20 rince님의 생동감 넘치는 하루가 궁금.. by greenfrog at 02/20 어제, 그제 정말 생동감 넘치는 하루.. by rince at 02/19 저도 짬 비릴때 고참들이 웃기면 그것 .. by greenfrog at 02/19 전 자주 웃는 편이지요 ^^; 군대에선 .. by rince at 02/18 저도 이 만화 보고 어쩜 저런 생각 없는 .. by greenfrog at 02/17 최근 등록된 트랙백
자바로 작성된 프로그램 단 한번만 실..
by Start!!! 제 취향이 Oddly Enough와 안성맞.. by Oddly Enough 2009년 보기 시작하는 미드 by Pell's seer Blog [포토] 국민 여러분, 떡국 드시고 .. by Green Monkey Blog** MARVEL MOVIES : 아이언 맨 by 잠보니스틱스 ▶◀ 최진실씨, 삼가 고인의 명복을 .. by ** MY's kitchen ** 재미로 해보는 MBTI 검사 by A2공간 - 도움되는 글을 쓰자 러시아 극우조직 스킨헤드를 파헤친 기자 by Oddly Enough [Sleeping Through My Fingers].. by 바람나무, 생각가는대로 구글 크롬 안내서의 작지만 큰 실수 by Oddly Enough PETA, 돼지학대 농장 잠입취재 by Oddly Enough 병쭈니의 생각 by chrisjun82's me2DAY 준이아빠의 생각 by kkh1030's me2DAY 안철수가 말하는 "현대의 인재에.. by loading... 100% 이전블로그
이글루 파인더
|