fatal error C1010: 사전 컴파일 헤더를 찾을 때 예상치 못한 파일 끝 | | error C2589: "(":"오른쪽의 잘못된 태그

6374 단어

 
fatal error C1010: 미리 컴파일된 헤더를 찾을 때 의외의 파일 끝에 부딪혔습니다.원본에 "#include"stdafx.h를 추가하는 것을 잊었습니까? (2011-09-08 22:17:50)
 
오류 설명:fatal error C1010: 미리 컴파일된 헤더를 찾을 때 의외의 파일 끝에 부딪혔습니다.원본에 "#include"stdafx.h"를 추가하는 것을 잊었습니까?
오류 분석:
   
  
이 오류가 발생한 이유는 컴파일러가 미리 컴파일된 헤더 파일 (기본 #include "stdafx.h") 을 찾을 때 파일이 끝날 것을 예상하지 못했기 때문입니다.지시 정보를 미리 컴파일한 헤더 파일 "stdafx.h"를 찾을 수 없습니다.
(프로젝트의 모든 cpp 파일 속성은 기본적으로 프리컴파일 헤더 (/YU) 를 사용하지만, 추가된 제3자 파일은 #include "stdafx.h"프리컴파일 헤더가 없기 때문에 컴파일러는 이 cpp 파일에서 끝까지 찾을 수 없습니다.)
   
나의 이 문제는 내가 파일을 추가하는 방식으로 MFC에 기존의 덩어리를 추가하는 데서 발생했다.h와.cpp 파일.이것들.h와.cpp 파일은 표준 C++의 소스 코드 범주에 속하며 MFC와 더 깊은 관계가 없습니다.
해결 방법:
하나.
1) 솔루션 리소스 매니저에서 해당 리소스를 마우스 오른쪽 버튼으로 클릭
.cpp 파일, "속성"클릭
2) 왼쪽 구성 속성에서 "C/C++"를 누르고 "예정된 헤더"를 누르십시오
3) 오른쪽 첫 줄의 [프리코딩 헤더 만들기/사용]을 변경하고 [프리코딩 헤더 사용(/Yu)]에서 [프리코딩 헤더 사용 안 함]으로 옵션을 변경합니다.
4) 주: 하나하나 잘못 보고한다.cpp 이렇게 바꿔야 돼요 ~ 고생 좀 해주세요 ~
2.
(권장하지 않음)
1) 솔루션 우클릭
프로젝트, 클릭 속성
2) 구성 속성 -> c/c++ -> 사전 컴파일 헤더에서 사전 컴파일 헤더 사용(/YU)을 사전 컴파일 헤더 사용 안 함으로 변경
이런 방법은 매번 번역 과정을 매우 느리게 할 것이다
 
주의C 파일에는 stdafx가 포함될 수 없습니다.h 헤더 파일은 반드시 미리 편집한 헤더를 제거해야 한다.
참고:
1) 그냥 있을 수도 있을 것 같다.cpp 헤더 파일에 stdafx가 포함되어 있습니다.h.원본 코드의 표준성을 파괴하고 싶지 않기 때문에 이렇게 수정을 시도하지 않았습니다. ^_^
2) VC가 이 방면의 지체를 식별하고 컴파일하는 것에 감개무량하다. -_-,너무 강해서 그런지 주도면밀하게 생각하지 않고 수동으로 수정을 해야 한다니~
3) Qt가 그립다...
 
 
추가 자료:
출처:
http://blog.csdn.net/hotandhot/archive/2006/10/23/1346195.aspx
 
1. 개념:
1. 사전 컴파일러: 컴파일러가 먼저 어떤 파일(예전 컴파일 헤더 파일)을 컴파일한 다음에 이 컴파일 결과를 저장한 다음에 다른 원본 파일인include가 이'사전 컴파일 헤더 파일'이 있을 때 자동으로 이 컴파일 결과에서 필요한 정보를 추출하여 컴파일합니다.
2. 사전 컴파일된 결과 파일(Precompiled header file): 컴파일된 기호 정보를 저장하는 파일(.PCH를 접두사로 사용)
3. 사전 컴파일된 결과 파일 생성(Create Precompiled header file): 원본 파일 A가 파일 B를 통해 사전 컴파일된 결과 파일 생성이란 A를 컴파일할 때 B의 컴파일된 결과를 사전 컴파일된 결과 파일로 저장하는 것을 말한다.일반적으로 마법사를 사용하면 A 파일은 "stdafx.cpp", B 파일은 "stdafx.h"입니다.stdafx.cpp에서 한 줄의 문장:
#include “stdafx.h”
4. 프리컴파일 헤더 사용(Using precompiled header): 어떤 원본 파일 (a.cpp) 이 "stdafx.h"를 통해 프리컴파일 결과를 사용하는 것은 a.cpp를 컴파일할 때 a.cpp의 첫 줄인clude 문장이 #include "stdafx.h"라면 프리컴파일 결과 파일의 결과를 직접 가져와 다시 컴파일하지 않습니다.h”
2. 안내원은 어떻게 합니까?
1. "stdafx.cpp"를 설정하는 사전 컴파일 옵션은 "stdafx.h"파일을 통해 사전 컴파일 결과 파일을 생성합니다.
2. 다른 원본 파일의 사전 컴파일 옵션 설정은 "stdafx.h"를 통해 사전 컴파일 헤더 사용하기
3. 사용 원칙?
1. 상대적으로 안정적인 헤더 파일(예를 들어 CRT, STL, 제3자가 고정된 라이브러리)을 모두 stdafx에 쓴다.h중.(stdafx.h를 사용할지 여부는 개인의 취향에 의존하지만, stdafx.h를 사용하면 마법사와 일치할 수 있습니다.)
2. 모든 원본 파일의 첫 줄에 #include "stdafx.h"를 추가합니다.
3. 수정할 수 없는 일부 원본 파일 (공용 코드가 있으면 수정할 수 있는 권한이 없는 코드) 을 설정하면 그의 사전 컴파일 옵션은 사전 컴파일 헤더를 사용하지 않는 것이다.주의, 반드시 "자동 생성 프리코딩 헤더"를 선택할 수 없습니다. 왜냐하면 이렇게 하면 stdafx를 만들 수 있기 때문입니다.h의 결과가 삭제되었습니다. (이것은 버그인지 디자인인지 모르겠습니다.^_^.)
4. Q&A
Q. 사전 컴파일 헤더 파일 자동 생성을 모두 사용하지 않는 이유는 무엇입니까?
A,'사전 컴파일 헤더 파일 자동 생성'은 아무것도 사용하지 않아도 된다. 컴파일 속도는 질적으로 향상되지 않는다.
Q. 프로젝트에 새 원본 파일을 수동으로 추가할 때 유사한 오류가 자주 발생합니다.
fatal error C1010: unexpected end of file while looking for precompiled header directive
A. 마법사의 기본 설정은'예정된 헤더 사용'이지만, 새로 추가한 파일은 첫 줄에'stdafx.h'를 포함하지 않습니다.해결 방법은 "예정된 헤더를 사용하지 않음"으로 수정하거나, #include "stdafx.h"줄을 추가하십시오.
Q, stdafx 추가.h와 stdafx.cpp는 항상 컴파일 플랫폼과 연결되어 이식성이 없다고 생각합니까?
A, 사실, stdafx에 주의하세요.h의 작법은 문제없다.내 솔루션은 (stdafx.h의 내용):
–begin of file stdafx.h
#ifdef _WIN32
#include "win.h"//윈도우 아래의 공통 헤더 파일
#else
#include "linux.h"//linux 아래의 공통 헤더 파일
#endif
#include "crt.h"//일반 c 표준 라이브러리
#include "stl.h"//STL 라이브러리
–end of file
아니면 좀 더 간단하게, VC 컴파일러가 아니라면, stdafx.h는 아무 내용도 안 써!
 
어떤 친구가 제가 제공한 [Visual C++] 게임을 컴파일하여 어떤 노트의 원본 코드를 개발할 때'fatal error C1083:
"StdAfx.h"라는 오류가 포함된 파일을 열 수 없습니다.여기에서 나는 전문적으로 자료를 찾아서 부분적으로 수정하여 박문으로 써서 이 문제가 발생한 친구들에게 도움이 되기를 바란다.
이 오류는 대부분 헤더 파일과 #include 이 두 사람의 관계가 헷갈려서 일어난 거야, 허허.
여기에서 우리는 vs2010을 채택하여 설명하는데, 다른 버전도 사실 조작 방안이 많지 않다.
1. Visual C++ 프로젝트의 경우cpp 파일에는 코드 #include, 프로젝트는 속성을 "예정된 헤더 사용"으로 설정해야 합니다. 구체적인 방안은 "자원 관리자"의 프로젝트에 우클릭 -> [속성] -> [설정된 속성] -> [C/C++] -> [예정된 헤더 사용] 을 선택한 다음 [예정된 헤더 만들기/사용] 을 선택하는 것입니다.
구체적인 조작은 내가 캡처한 그림을 볼 수 있다.
하면, 만약, 만약...cpp 파일에 stdafx가 포함되어 있습니다.h 파일, "예정된 헤더를 사용하지 않음"으로 설정하면 컴파일이 잘못될 수 있습니다.
fatal error C1083: 파일을 열 수 없습니다. "StdAfx.h": No such file or directory,
그래서 "예정된 헤더 만들기"또는 "예정된 헤더 사용"으로 설정합니다.
3. 다음 오류가 발생하면:fatal error C1010: 미리 컴파일된 헤더를 찾을 때 의외의 파일 끝에 부딪힙니다.원본에 "#include"stdafx.h"를 추가하는 것을 잊었습니까?
stdafx가 포함되지 않았음을 나타냅니다.h 파일, 미리 컴파일된 헤더를 사용하지 않도록 설정하면 됩니다.
4. 최근에 matlab와vc 혼편을 했기 때문에 생성되었다.c 파일,.c 파일은 미리 컴파일된 헤더를 사용할 수 없습니다. 만약 이런 파일을 미리 컴파일된 헤더를 사용하게 하면 다음과 같은 오류가 발생합니다.
"Debug\SMMS.pch"사전 컴파일 헤더 파일은 컴파일러의 이전 버전에서 나오거나 사전 컴파일 헤더가 C++인 경우 C에서 사용하거나(또는 반대로)
그래서c 파일 오른쪽 버튼 -> [속성] -> "예정된 헤더를 사용하지 않습니다."이 파일의 속성만 주의하십시오.
 
  
-------------------------------------------------------------------------------------------------
error C2589: (":"오른쪽의 잘못된 태그
error C2059: 구문 오류: ":"
구글은 맥스를 괄호로 묶어서 윈도우즈가 정의한 매크로와 혼동하지 않도록 해야 한다고 생각했다
 
or you can prevent macro invocation by using an extra set of parentheses:
column = (std::max)(1u, column + count);  
(std::numeric_limits<double>::max)()

 
Windef 때문에.h에서 정의했습니다.
#ifndef max
#define max(a,b)            (((a) > (b)) ? (a) : (b))
#endif
그래서 컴파일 오류가 나요.
 

좋은 웹페이지 즐겨찾기