BUG: 나타날 있는 "심각한 오류 C1001: 내부 컴파일러 오류" Visual C++ 6 .0에서 가상 함수 복사본이 있는 개체를 만들 때 오류 값을 반환합니다

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

226110
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
현상
개체를 만드는 컴파일러 제공 복사 생성자를 사용하여 가상 함수 반환 값 (임시 개체) 복사본이 경우 다음과 같은 오류가 나타날 수 있습니다.
test.cpp(22): 심각한 오류 C1001: 내부 컴파일러 오류
(컴파일러 파일 ' msc1.cpp ', 줄 1794)
Visual C++ [기술 지원] 명령을 선택하십시오.
자세한 내용은 기술 지원 도움말 파일을 열거나 도움말 메뉴,

아래의 추가 정보 절에 있는 재현 단계를 참조하십시오.
해결 방법
문제를 해결하려면 다음 네 가지가 있습니다.
  1. 명시적으로 복사 생성자 정의. (아래 예제 코드에서 대안 # 1 참조).
  2. 값을 반환하는 함수 virtual 키워드를 제거하십시오. (아래 예제 코드에서 대안 # 2 참조).
  3. 반환 값을 저장하는 임시 변수를 소개하십시오. (아래 예제 코드에서 대안 # 3 참조).
  4. 동기 (C++) 예외 처리에 대한 컴파일러 지원을 제거하십시오. 이 컴파일 옵션 중에서/GX Visual Studio 기본 제거하여 수행할 수 있습니다. (아래 예제 코드에서 대안 # 4 참조).
해결 방법은 # 1 권장된 해결 방법을 가능하면 것입니다.

참고: 복사 생성자를 정의하는 경우, 또한 할당 연산자를 정의해야 합니다 (연산자 =).
현재 상태
Microsoft는 Microsoft 버그가 있음을 확인했습니다 이 문서의 시작 부분에 나열된 제품에.

이 문제는 Microsoft Visual C++에서 수정되었습니다 .NET.
추가 정보
////////////////////////////////////////////////////////////////////// // cl /c /GX test.cpp// test.cpp(22) : fatal error C1001: INTERNAL COMPILER ERROR//  (compiler file 'msc1.cpp', line 1794) //  Please choose the Technical Support command on the Visual C++ //  Help menu, or open the Technical Support help file for more information////////////////////////////////////////////////////////////////////// class A{  public:    /* workaround #1, add an explicit copy constructor to class A */     // A(A& a) {};    ~A() {}; };class B{  public: /* workaround #2, remove virtual keyword from B::GetA */     virtual A& GetA(void);    void Func (void);};void B::Func (void){  A *att;  att=new A(GetA());  /* workaround #3, substitute the above line with the following two lines */   //A tmp = GetA();  //att=new A(tmp);}/* workaround #4, remove /GX compiler option */ 				
내부 컴파일러 오류 ICE C1001

Warning: This article has been translated automatically

속성

문서 ID: 226110 - 마지막 검토: 02/23/2014 08:11:16 - 수정: 3.0

  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • kbnosurvey kbarchive kbmt kbtshoot kberrmsg kbbug kbcompiler kbfix kbnoupdate KB226110 KbMtko
피드백