반응형
 
2008.07.15
 
반응형

visual studio 를 사용하다 보면 이와 같은 에러를 가끔 볼수도 있을 것이다.
1.fatal error C1010: unexpected end of file while looking for precompiled header directive
2.fatal error C1852: 'Debug/test.pch' is not a valid precompiled header file

이는 소스코드에 제일 상단에 #include "stdafx.h"을 주석처리하거나, 다른 파일을 먼저 #include 하거나 할 때 발생한다. 이는 Visual C++에서 컴파일 할 때 제일상단에 #include "stdafx.h"가 있는지를 확인하는데, 발견되지 않기 때문에 발생하는 에러이다. 해결방법은 모든 cpp파일의 제일상단에 #include "stdafx.h"를 해야 한다.

3.fatal error C1853: "Debug/test.pch" is not a precompiled header file created with this compiler
#include "stdafx.h"를 모든 cpp파일의 제일상단에 포함을 했는데에도 위 에러가 발생하는 경우가 종종 있다. 해결방법은 잠시 후에 하도록 하겠다.

그럼 #include "stdafx.h"이 뭔가?
사실은 #include "stdafx.h"이 중요한 것이 아니고, precompiled header가 무엇인지 아는 것이 중요하다. 물론 자세한 내용은 MSDN-Creating Precompiled Header Files을 참조하기를 바라고, 여기서는 간단하게만 설명을 하고 넘어가겠다.

windows programming에서 제공하는 다양한 resource(button, list, combo)를 사용하여 programming을 하게 되는데, 이들 resource를 포함하여 매번 컴파일을 하게 되면 컴파일 시간이 많이 걸린다. 이를 위해서 미리 이 부분에 대해서 컴파일을 해두고, 사용자가 컴파일 할 때 이러한 미리 컴파일 된 정보를 가져와서 빨리 컴파일을 하기 위한 용도로 precompiled header라는 것을 사용한다. Visual C++에서는 default로 precompiled header를 사용하도록 설정이 되어 있으며, 처음 프로젝트를 생성하여 컴파일 할 때에는 시간이 많이 걸리지만, 이후에 자신이 작성한 소스를 생성, 수정하여 컴파일 할 때에는 빠르게 처리되는 것을 한번쯤은 느껴보았을 것이다.

다시 말하면 precompiled header로 default로 설정이 되어 있는 것이 "stdafx.h"이고, 처음 컴파일을 하면 미리 컴파일 된 정보가 name.pch(파일 확장자 pch는 precompiled header의 약자)로 Debug 또는 Release 폴더에 생성되는 것을 볼 수 있다.

"stdafx.h"는 한번쯤 열어보면, windows program으로 project를 생성한 경우, window와 관련된 다양한 header file을 #include하고 있고, 본인은 여기에 모든 소스에 공통적으로 사용되기를 원하는 #define, #pragma(lib 처리를 위해 종종 사용, 자세한 것은 다음 시간에)등에 활용하기도 한다.

마지막으로 어떤 소스들은 #include "stdafx.h"를 제일상단에 포함을 하지 않았는데에도 아무런 에러가 발생하지 않는 경우가 있다. 이는 precompiled header를 사용하지 않겠다고 지정을 한 경우이다.

메뉴>Project/Settings
사용자 삽입 이미지
<visual studio 2008 캡처화면>
위항목과 같이 설정해 보도록 하자
Precompiled Header File 항목은 .\Debug/프로젝트명.pch 로 하면 될것이다.

precompiled header를 이용하지 않거나, 다른 파일로 precompiled header를 설정할 수도 있다. 이를 이용하여 위의 3번 에러에 대한 수정도 할 수 있다.

#include "stdafx.h"와 precompiled header는 매우 자주 접하게 되는 에러와 연관이 있기 때문에 한번쯤 관심 있게 살펴보는 것이 매우 중요하다고 생각이 된다.
반응형

1. 사이트 : http://www.vim.org/

2. 다운로드 : ftp://ftp.vim.org/pub/vim/pc/gvim70.exe (Self-installing executable)

3. 설치

    - 다운받은 파일을 실행합니다.

    - 바탕화면에 아이콘이 생성되면 제대로 설치된 것입니다.

4. 설정

    - C:\Program Files\Vim\_vimrc 파일을 아래와 같이 설정을 입력합니다.

colorscheme  darkblue
set nu
set ai

set nocompatible " Vim 디폴트 기능들을 사용함 "
set backspace=2 " 삽입 모드에서 백스페이스를 계속 허용 "
set autoindent " 자동 들여쓰기 "
set cindent " C 언어 자동 들여쓰기 "
set smartindent " 역시 자동 들여쓰기 "
set textwidth=90 " 86번째 칸을 넘어가면 자동으로 줄 바꿈 "
set nowrapscan " 찾기에서 파일의 맨 끝에 이르면 계속하여 찾지 않음 "
set nobackup " 백업파일을 만들지 않음 "
set novisualbell " 비주얼벨 기능을 사용하지 않음 "
set nojoinspaces " J 명령어로 줄을 붙일 때 마침표 뒤에 한칸만 띔 "
set ruler " 상태표시줄에 커서 위치를 보여줌 "
set tabstop=4 " 간격 "
set shiftwidth=4 " 자동 들여쓰기 간격 "
set keywordprg=man\ -a " K를 눌렀을 때 실행할 명령어 "
set showcmd " (부분적인) 명령어를 상태라인에 보여줌 "
set showmatch " 매치되는 괄호의 반대쪽을 보여줌 "
set ignorecase " 찾기에서 대/소문자를 구별하지 않음 "
set incsearch " 점진적으로 찾기 "
set autowrite " :next 나 :make 같은 명령를 입력하면 자동으로 저장 "
set linespace=3 " 줄간격 "
set title " 타이틀바에 현재 편집중인 파일을 표시 "
set keywordprg=wdic " 사전 "
set statusline=\ %<%l:%v\ [%P]%=%a\ %h%m%r\ %F\ " 다중 문서 작업을 위한 Status 줄 "
syntax on " 자동 문법 강조 "


설정은 http://trueplus.co.kr/auglen/24 를 참조했습니다.


5. 원격편집

    - editplus와 같이 ftp나 sftp로 서버의 파일을 편집하고자 할 경우엔 winscp를 같이 사용합니다. (http://winscp.net/)

    - winscp를 설치한 다음에 설정에서 편집기를 gvim으로 정해 놓으면 간편하게 원격 파일을 편집할 수 있습니다.

+ Recent posts