[C/C++] 미리 컴파일된헤더(Precompiled Header)?  컴파일 시간을 줄여봅시다!
Language/CㅣC++

[C/C++] 미리 컴파일된헤더(Precompiled Header)? 컴파일 시간을 줄여봅시다!

미리컴파일된 헤더(Precomplied Header) 란?

말그대로 헤더를 미리 컴파일 해두는겁니다 . 프로그램을 만들다보면 어쩔수없이 프로그램의 몸집은 점점 불어가죠 프로그램이 커지면 전처리기가 컴파일해야될 헤더도 엄청나게 많아질텐데요 컴파일 시간이 늘어나는건 당연하겠죠? 이 컴파일 시간을 효과적으로 줄여줄 수 있는 방법을 소개합니다. 

 

조금더 자세하게 말씀드리면 .. 

 

미리컴파일된 헤더(Precompiled Header) 는 자주변경되지 않는 긴소스를 미리 컴파일하여 컴파일결과를 별도의 파일에 저장하여, 다시 똑같은 헤더를 컴파일시 해당파일을 처음부터 컴파일하지않고 미리컴파일된 헤더 파일을 사용해 컴파일 속도를 월등히 향상시켜줍니다. 예를들면 windows.h 같은 덩치가 매우큰 녀석들을 사용할때 말이죠. 당연히 일일히 헤더를 파싱하는것보다 훨씬 빠르겠죠?

 

이제 사용방법을 알아봅시다 ! 

보통 파일명은 stdafx.h 와 stdafx.cpp 을 사용합니다.기본적으로 VC++ 에서 사용하는 PCH 파일 이름입니다. (바껴도 상관없어요. 저는 그대로 stdafx를 사용하도록 하겠습니다) 

 

폴더를하나 생성하고 stdafx.h 와 stdafx.cpp 두 파일을 생성합니다.

 

② 프로젝트 - (프로젝트명)속성 - C/C++ - 미리컴파일된헤더 에 가서, 미리 컴파일된 헤더 사용(/Yu) 를 선택해 줍시다.

③ stdafx.cpp 파일의 속성 메뉴에 들어가 똑같은 방법으로 만들기(/Yc) 를 선택 해줍니다. 

 

 

 

이로써 사용하기전 설정은 다 끝이났습니다. 이제 미리 컴파일할 헤더를 입력해주어야 겠죠?

stdafx.cpp 파일에 #include "stdafx.h" 를 입력해줌으로써 미리컴파일된 헤더를 사용하는 모든 cpp파일에 추가시켜 주게됩니다.

//stdafx.cpp

#include "stdafx.h" // 미리컴파일된 헤더를 사용하는 모든 cpp 파일에 추가시켜줍니다.

 

stdafx.h 파일에 미리 컴파일할 헤더를 추가합니다. 

 

 

//stdafx.h

// progma once 란?? 컴파일러에게 해당 헤더 파일이 한번만 빌드되도록 합니다. 
// #ifdef 랑 비슷한 기능을 합니다  

#pragma once

#include "windows.h"
#include <string>

 

 

"어 그럼 자주쓰는 헤더 모두 미리 컴파일 해두면 좋곘네요?"  라고 생각하시는 분이 있을 수도 있는데요. 이건 잘못된 생각입니다. 미리 컴파일할 헤더를 만들때 신중하게 생각하여 만드는게 중요합니다. 

미리 컴파일된 헤더(PCH) 를 만들고난뒤 추후에 수정할일이 생기게되어 수정하게되면 미리 컴파일된 헤더를 다시 만들어야되는 일이 생깁니다. 그래서 헤더를 추가할때는 교체할일이 자주없고 크기가큰(컴파일 시간이 긴) 헤더가 뭘까 생각해본뒤 추가시키는 게 좋습니다.

#include<stdio.h> 
#include"stdafx.h"

int main() { 

	printf("미리컴파일된 헤더 사용예제!\n");
	return 0; 
    
}

 

 

사용하실때는 이렇게 선언만 해주시면 됩니다