다음을 통해 공유


컴파일 타임의 주요 변경 사항 요약

업데이트: 2007년 11월

이 항목에서는 Visual C++ 2003 이전에는 오류나 경고 없이 컴파일되었던 코드로 인해 발생하는 컴파일 타임 오류 및 경고를 요약하여 설명합니다. Visual C++ 2005에는 규칙 준수와 관련된 일부 컴파일 타임 주요 변경 사항도 있습니다.

  • 이제 정의된 전처리기 지시문에 닫는 괄호가 필요합니다(C2004).

  • 누락된 typename 키워드와 명시적 특수화로 인해 더 이상 기본 템플릿에서 템플릿 매개 변수가 검색되지 않습니다(C2146).

  • 보호된 멤버 n은 n이 멤버로 포함된 클래스 A에서 상속하는 클래스 B의 멤버 함수를 통해서만 액세스될 수 있습니다(C2247).

  • 컴파일러의 향상된 내게 필요한 옵션 확인으로 인해 이제 액세스할 수 없는 기본 클래스가 검색됩니다(C2247).

  • 명시적 특수화는 복사 생성자 또는 복사 할당 연산자가 될 수 없습니다(C2299).

  • 소멸자 및/또는 복사 생성자에 액세스할 수 없는 경우 예외를 catch할 수 없습니다(C2316).

  • 함수에 대한 포인터에 기본 인수를 더 이상 사용할 수 없습니다(C2383).

  • 정적 데이터 멤버는 파생 클래스를 통해 초기화할 수 없습니다(C2477).

  • 표준에 따라 typedef 초기화가 허용되지 않으므로 이제 컴파일러 오류가 생성됩니다(C2513).

  • bool은 이제 적절한 형식입니다(C2632).

  • UDC는 이제 오버로드된 연산자에서 모호성을 초래할 수 있습니다(C2666).

  • 한정 변환과 동일 변환이 같지 않습니다(C2666).

  • 이제 더 많은 식이 유효한 null 포인터 상수로 간주됩니다(C2668).

  • 이전에는 컴파일러가 유추했던 부분에 이제 template<>이 필요합니다(C2768).

  • 함수가 템플릿 클래스 특수화를 통해 이미 명시적으로 특수화되어 있는 경우 클래스 외부의 멤버 함수에 대한 명시적 특수화가 유효하지 않습니다(C2910).

  • 모든 명시적 특수화에 대해 기본 템플릿의 매개 변수와 일치하도록 모든 명시적 특수화의 매개 변수를 선택해야 합니다(C2912).

  • 부동 소수점 비형식 템플릿 매개 변수가 더 이상 허용되지 않습니다(C2993).

  • 클래스 템플릿을 템플릿 형식 인수로 사용할 수 없습니다(C3206).

  • friend 함수 이름이 더 이상 포함하는 네임스페이스에 정의되지 않습니다(C3767).

  • 멤버 포인터 규칙이 향상되었습니다(C3867).

  • 컴파일러가 더 이상 매크로에 추가 쉼표를 허용하지 않습니다(C4002).

  • () 형식의 이니셜라이저로 구성된 POD 형식의 개체는 기본값으로 초기화됩니다(C4345).

  • 종속 이름을 형식으로 처리하려면 이제 typename을 사용해야 합니다(C4346).

  • 템플릿 특수화로 잘못 인식되었던 함수가 더 이상 템플릿 특수화로 인식되지 않습니다(C4347).

  • 정적 데이터 멤버를 파생 클래스를 통해 초기화할 수 없습니다(C4356).

  • 반환 형식에 사용되기 전에 클래스 템플릿 특수화를 정의해야 합니다(C4686).

  • 컴파일러가 이제 접근할 수 없는 코드를 보고합니다(C4702).

  • 새 비템플릿 함수를 선언하는 friend 선언을 정의해야 합니다(LNK2019).

참고 항목

참조

Visual C++ 컴파일러의 주요 변경 사항