Share via


컴파일러 오류 C2065

업데이트: 2007년 11월

오류 메시지

'identifier' : 선언되지 않은 식별자입니다.
'identifier' : undeclared identifier

변수를 사용하기 전에 선언 부분에 변수의 형식을 지정해야 하며, 함수를 사용하기 전에 선언 부분에 함수가 사용하는 매개 변수나 프로토타입을 지정해야 합니다.

가능한 원인

  1. 디버그 버전의 C 런타임으로 컴파일하고 있고, for 루프 안에서 표준 C++ 라이브러리 반복기 변수를 정의한 다음 for 루프의 범위 외부에서 이 반복기 변수를 사용하려고 했습니다. 표준 C++ 라이브러리 코드를 디버그 버전의 C 런타임으로 컴파일하면 /Zc:forScope가 자동으로 적용됩니다. 자세한 내용은 Debug Iterator Support를 참조하십시오.

  2. 사용자 빌드 환경에서 현재 지원하지 않는 SDK 헤더 파일에서 함수를 호출했을 수 있습니다.

  3. 특히 VC_EXTRALEAN, WIN32_LEAN_AND_MEAN 또는 WIN32_EXTRA_LEAN을 정의하는 경우에는 필요한 포함 파일이 생략됩니다. 이러한 기호는 windows.h 및 afxv_w32.h에서 일부 헤더 파일을 제외시켜 컴파일 속도를 증진시킵니다. windows.h 및 afxv_w32.h에서 제외 대상에 대한 최신 설명을 찾아보십시오.

  4. 식별자 이름의 철자가 잘못되었습니다.

  5. 식별자가 잘못된 대/소문자를 사용합니다.

  6. 문자열 상수 다음에 닫는 따옴표가 없습니다.

  7. 네임스페이스 범위가 잘못되었습니다. 예를 들어, ANSI C++ 표준 라이브러리 함수 및 연산자를 해결하려면 using 지시문을 사용하여 std 네임스페이스를 지정해야 합니다. 다음 예제에서 using 지시문은 주석 처리되었으며 cout는 std 네임스페이스에 정의되어 있으므로 컴파일을 수행할 수 없습니다.

예제

다음 샘플에서는 C2065 오류가 발생하는 경우를 보여 줍니다.

// C2065.cpp
// compile with: /EHsc
// using namespace std;
#include <iostream>
int main() {
   cout << "Hello" << endl;   // C2065

   // try the following line instead
   std::cout << "Hello" << std::endl;
}

제네릭 함수를 호출하는 경우 사용된 매개 변수에서 의도된 형식 인수를 추론할 수 없으면 컴파일러에서 오류를 보고합니다. 자세한 내용은 Generic Functions를 참조하십시오.

다음 샘플에서는 C2065 오류가 발생하는 경우를 보여 줍니다.

// C2065_b.cpp
// compile with: /clr
generic <typename ItemType>
void G(int i) {}

int main() {
   // global generic function call
   G<T>(10);   // C2065
   G<int>(10);   // OK
}

이 오류는 Visual C++ 2005에 대해 수행된 즉, Visual C++ 특성에 대한 매개 변수 검사를 수행한다는 컴파일러 규칙의 결과에 따라 발생할 수도 있습니다. 자세한 내용은 Visual C++ 2005 컴파일러의 주요 변경 사항을 참조하십시오.

다음 샘플에서는 C2065 오류가 발생하는 경우를 보여 줍니다.

// C2065_c.cpp
// compile with: /c
[module(DLL, name=MyLibrary)];   // C2065
// try the following line instead
// [module(dll, name="MyLibrary")];

[export]
struct MyStruct {
   int i;
};