Ошибка компилятора C2065
"идентификатор": необъявленный идентификатор
Перед использованием переменной необходимо указать ее тип в объявлении.Перед вызовом функции следует задать используемые в ней параметры в объявлении или прототипе.
Возможные причины:
При компиляции с использованием отладочной версии среды выполнения C в цикле for объявляется переменная-итератор из стандартной библиотеки C++. После этого выполняется попытка использования этой переменной вне цикла for.При компиляции кода стандартной библиотеки C++ с использованием отладочной версии среды выполнения C подразумевается установка параметра /Zc:forScope.Дополнительные сведения см. в разделе Поддержка итераторов отладки.
Выполняется вызов функции в файле заголовка SDK, которая не поддерживается в среде построения.
Не указаны необходимые файлы include (особенно при определении параметров VC_EXTRALEAN, WIN32_LEAN_AND_MEAN или WIN32_EXTRA_LEAN).Эти символы позволяют исключить некоторые файлы заголовка из файлов windows.h и afxv_w32.h, что позволяет ускорить процесс компиляции.(Актуальное описание исключаемых файлов см. в файлах windows.h и afxv_w32.h.)
Ошибка в написании имени идентификатора.
Ошибка при использовании строчных и прописных букв в имени идентификатора.
Отсутствует закрывающая кавычка после строковой константы.
Недопустимое пространство имен.Для разрешения функций и операторов стандартной библиотеки ANSI C++ следует указать пространство имен std с помощью директивы using.В следующем примере возникает ошибка компиляции, поскольку в нем закомментирована директива 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;
}
Если при вызове универсальной функции не удается логически вывести предполагаемый аргумент типа на основании используемых параметров, возникает ошибка компилятора.Дополнительные сведения см. в разделе Универсальные функции (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
}
Данная ошибка может также возникать в результате действий по обеспечению совместимости компилятора с 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;
};