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

기술 자료 번역 기술 자료 번역
기술 자료: 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 */ 
				

속성

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

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com