Рекомендуем использовать Visual Studio 2017

Ошибка компилятора C2065

 

Самая актуальная документация по Visual Studio 2017: Документация по Visual Studio 2017.

identifier: необъявленный идентификатор

Необходимо указать тип переменной в объявлении, прежде чем ее можно будет использовать. Параметры, которые функция использует, необходимо указать в объявлении (или прототипе) перед использованием функции.

Возможные причины:

  1. имя идентификатора содержит ошибку;

  2. в идентификаторе используются неверные прописные и строчные буквы;

  3. отсутствует закрывающая кавычка после строковой константы.

  4. Компиляция выполняется с отладочной версией среды выполнения C, переменная итератора стандартной библиотеки C++ for объявляется в цикле, а затем вы пытаетесь использовать эту переменную итератора вне области цикла for. При компиляции кода стандартной библиотеки C++ с использованием отладочной версии среды выполнения C подразумевается /Zc: forScope. В разделе поддержку отладки итераторов подробнее.

  5. Возможно, выполняется вызов функции в файле заголовка SDK, который в настоящее время не поддерживается в среде построения.

  6. Пропущены необходимые файлы включения, особенно при определении VC_EXTRALEAN, WIN32_LEAN_AND_MEAN или WIN32_EXTRA_LEAN. Эти символы исключают некоторые файлы заголовков из файлов windows.h и afxv_w32.h для ускорения компиляции. (Описание исключаемых файлов см. в файлах windows.h и afxv_w32.h.)

  7. Недопустимое пространство имен. Например, чтобы разрешить функции и операторы стандартной библиотеки C++, которые не являются полными, необходимо указать пространство имен std с директивой using. При компиляции следующего примера возникает ошибка , так как директива using закомментирована, а в пространстве имен std задан cout:

В следующем примере показано возникновение ошибки C2065 и приводятся сведения по ее устранению.

// C2065.cpp  
// compile with: /EHsc  
// using namespace std;   // Uncomment this line to fix  
#include <iostream>  
int main() {  
   cout << "Hello" << endl;   // C2065  
  
   // Or try the following line instead  
   std::cout << "Hello" << std::endl;  
}  

Если при вызове универсальной функции определить заданный аргумент типа по используемым параметрам не удается, компилятор выдает ошибку. Дополнительные сведения см. в разделе универсальные функции (C + +/ CLI).

В следующем примере показано возникновение ошибки 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 - fix with a specific type argument  
}  

Эта ошибка также может возникать в результате действий по обеспечению совместимости компилятора с Visual C++ 2005: проверка параметров для атрибутов Visual C++.

В следующем примере показано возникновение ошибки 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;  
};  

Показ: