Идентификатор error не определен

Ответили на вопрос 2 человека. Оцените лучшие ответы! И подпишитесь на вопрос, чтобы узнавать о появлении новых ответов.

вот весь код

#include <iostream> 
#include <windows.h> 
using namespace std;
class Triangle
{
public:
	int a;
	int b;
	int c;
	int x;
	int y;
	Triangle(int a1, int b1, int c1) { a = a1; b = b1; c = c1; }
	double S() {
		return (sqrt((a + b + c) * (1.0 / 2) * ((a + b + c) * (1.0 / 2) - c) * ((a + b + c) * (1.0 / 2) - a) * ((a + b + c) * (1.0 / 2) - b)));
	}
	void move()
	{
		cout << endl;
		cout << "введи точку икс : ";
		cin >> x;
		cout << "введи точку игрек : ";
		cin >> y;
		cout << "фигура перемещена в точку " << x << " " << y << endl;
	}
};
class Rectangl
{
public:
	int a2;
	int b2;
	int x2;
	int y2;
	double sinx;
	Rectangl(int a1, int b1, double sinx1) { a2 = a1; b2 = b1; sinx = sinx1; }
	double S1() {
		return (0.5 * a2 * b2 * sinx);
	}
	void move1()
	{
		cout << endl;
		cout << "введи точку икс : ";
		cin >> x2;
		cout << "введи точку игрек : ";
		cin >> y2;
		cout << "фигура перемещена в точку " << x2 << " " << y2 << endl;
	}
};
class Work : public Triangle, public Rectangl
{
public:
	Work(int a, int b, int c, int a2, int b2 , double sinx ) :Triangle(a,b,c), Rectangl(a2,b2,sinx) {};
	void compare()
	{
		cout << S() <<endl;
		cout << S1() <<endl;

		if (S1() > S()) {
			cout << "Площадь четырёхугольника больше n";
		}
		if (S1() < S()) {
			cout << "Площадь треугольника больше n";
		}
		if (S1() == S()) {
			cout << "Площадь одинакова";
		}
	}
};
int main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	int a, b, c, a2, b2;
	double sinx;
	cout << "создать объекты?(жми 0)" << endl;
	int flak;
	cin >> flak;
	if (flak == 0) {
		cout << "введи стороны треугольника";
		cin >> a;
		cin >> b;
		cin >> c;
		cout << "введи диагонали и синус угла между ними для чутырёхугольника";
		cin >> a2;
		cin >> b2;
		cin >> sinx;

		Work* p;
		Triangle* p1;
		Rectangl* p2;
		p1 = new Triangle(a, b, c);
		p2 = new Rectangl(a2, b2, sinx);
		p = new Work(a, b, c, a2, b2, sinx);
		p->compare();
	}
	cout << "Что хочешь?" << endl;
	cout << "удалить объекты(жми1)" << endl;
	cout << "переместить объекты(жми2)" << endl;
	cout << "сравнить объекты(жми3)" << endl;

	int flak1;
	cin >> flak1;

	if (flak1 == 1) {
		delete p;
		delete p1;
		delete p2;
	}

	system("PAUSE");
	return 0;
}

интересуют три строки в конце с delete

Почему вне if все нормально, а внутри идентификатор не определен

Lightopeon

0 / 0 / 0

Регистрация: 06.03.2019

Сообщений: 9

1

Идентификатор не определен

06.03.2019, 21:11. Показов 34736. Ответов 11

Метки нет (Все метки)


C++
1
2
3
4
5
6
7
int main() 
{
    int a;
    сin >> a;
    //system("pause");
 
}

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

06.03.2019, 21:11

Ответы с готовыми решениями:

идентификатор _ReturnAddr идентификатор не определён; _ReturnAddress идентификатор не найден
#include &quot;Hooks.h&quot;
#include &quot;Hacks.h&quot;
#include &quot;Chams.h&quot;
#include &quot;Menu.h&quot;

#include…

Требуется идентификатор (идентификатор с не определён)
Не могу понять в чём ошибка данного записи.Пожалуйста, объясните!!!
vector &lt;pair&lt;int, int&gt;&gt; STACK;…

Идентификатор не определён
В общем, есть программа. Написал, вроде бы, правильно, но уже который день бьюсь над одной ошибкой….

Идентификатор не определен
Писали ее на microsoft visual studio2013. выдает 7 ошибок на 74, 125, 136, 149, 159, 170 и 177 и…

11

330 / 145 / 56

Регистрация: 17.10.2015

Сообщений: 580

06.03.2019, 21:18

2

Какой именно?



0



L0M

Мозгоправ

1738 / 1032 / 468

Регистрация: 01.10.2018

Сообщений: 2,138

Записей в блоге: 2

06.03.2019, 21:19

3

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
using namespace std;
 
int main()
{
int a;
сin >> a;
//system("pause");
}



0



0 / 0 / 0

Регистрация: 06.03.2019

Сообщений: 9

06.03.2019, 21:22

 [ТС]

4

Идентификатор не определен



0



0 / 0 / 0

Регистрация: 06.03.2019

Сообщений: 9

06.03.2019, 21:31

 [ТС]

5

чекай тему

Добавлено через 7 минут
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) E0020 идентификатор «сin» не определен Project1 G:с+Project1Project1main.cpp 6

Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2065 сin: необъявленный идентификатор Project1 g:с+project1project1main.cpp 6



0



JohnBlack123

215 / 162 / 52

Регистрация: 09.12.2017

Сообщений: 520

06.03.2019, 21:40

6

C++
1
2
#include <iostream>
using namespace std;

Эти строки вставьте в самом начале.



1



0 / 0 / 0

Регистрация: 06.03.2019

Сообщений: 9

06.03.2019, 21:42

 [ТС]

7

Я конечно не шарю но вроде да…
Можешь объяснить какую роль выполняет команда using namespace std



0



330 / 145 / 56

Регистрация: 17.10.2015

Сообщений: 580

06.03.2019, 21:45

8

Подключает стандартное пространство имён, которое, в частности, хранит реализацию необходимого Вам cin



0



0 / 0 / 0

Регистрация: 06.03.2019

Сообщений: 9

06.03.2019, 21:45

 [ТС]

9

Не помогло.



0



215 / 162 / 52

Регистрация: 09.12.2017

Сообщений: 520

06.03.2019, 21:45

10

Она сделана для ленивых. Чтобы обратится к объекту cout/cin, нужно писать так : std::cout/std::cin соответственно.
А using namespace std позволяет не делать этого. Это если просто и коротко. Подробнее прочтете в учебнике.



0



Lightopeon

0 / 0 / 0

Регистрация: 06.03.2019

Сообщений: 9

06.03.2019, 22:07

 [ТС]

11

Нечего не поменялось(

Кликните здесь для просмотра всего текста

1>—— Сборка начата: проект: Project1, Конфигурация: Debug Win32 ——
1>main.cpp
1>g:с+project1project1main.cpp(10): error C2065: сin: необъявленный идентификатор
1>Сборка проекта «Project1.vcxproj» завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Добавлено через 15 минут
Можешь мне ещё чем не будь помочь ?

Я полностью скопировал

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
using namespace std;
 
int main()
{
int a;
сin >> a;
//system("pause");
}

И всё ровно выдаёт ошибку:
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) E0020 идентификатор «сin» не определен Project1 G:с+Project1Project1main.cpp 10



0



330 / 145 / 56

Регистрация: 17.10.2015

Сообщений: 580

06.03.2019, 22:14

12

У вас буква «c» в «cin» написана в русской раскладке



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

06.03.2019, 22:14

12

I am facing an issue while trying to execute the following C++ code (with microsoft visual studio Enterprise 2015 on Windows 7 x64):

//Test704.cpp : Defines the entry point for the console application.

//#include "StdAfx.h"
#include "704IO.h"
#include "Test704.h"

#ifdef _DEBUG
  #define new DEBUG_NEW
#endif

/////////////////////////////////////////////////////////////////////////////

CWinApp theApp;  // The one and only application object

/////////////////////////////////////////////////////////////////////////////

using namespace std;
/////////////////////////////////////////////////////////////////////////////

int _tmain(int argc, TCHAR *argv[], TCHAR *envp[])
{
int     nRetCode(0);
HMODULE hModule(::GetModuleHandle(NULL));
short   valueRead;

  if (hModule != NULL)
  {
    // Initialize MFC and print and error on failure
    if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
    {
      // TODO: change error code to suit your needs
      _tprintf(_T("Fatal Error: MFC initialization failedn"));
      nRetCode = 1;
    }
    else
    {
      while(true)
      {
        valueRead = PortRead(1, 780, -1);
        _tprintf(_T("Value Read = %in"), valueRead);
        Sleep(1000);  // Sleep for 1s so we can see the value on the screen
      }
    }
  }
  else
  {
    // TODO: change error code to suit your needs
    _tprintf(_T("Fatal Error: GetModuleHandle failedn"));
    nRetCode = 1;
  }

  return nRetCode;
}

/////////////////////////////////////////////////////////////////////////////

And I have the 16 following errors:

Identifier "CWinApp" not defined (line 13)
Identifier "TCHAR" not defined (line 20)
Identifier "TCHAR" not defined (line 20)
Identifier "HMODULE" not defined (line 23)
The global scope doesn't have "GetModuleHandle" (line 23)
Identifier "NULL" not defined (23)
Identifier "AfxWinInit" not defined (29)
The global scope doesn't have "GetCommandLine" (line 29)
Identifier "_tprintf" not defined (line 32)
Identifier "_T" not defined (line 32)
Identifier "_tprintf" not defined (line 40)
Identifier "_T" not defined (line 40)
Identifier "Sleep" not defined (line 41)
Identifier "_tprintf" not defined (line 48)
Identifier "_T" not defined (line 48)
TRK0005: Failed to localize "CL.exe": The specified file cannot be found (line 1)

However I have already executed this code with another version of visual studio (2012) on a windows 7 x32 computer and it worked perfectly. I suspect the error to be about my configuration… do you have any idea?

I am facing an issue while trying to execute the following C++ code (with microsoft visual studio Enterprise 2015 on Windows 7 x64):

//Test704.cpp : Defines the entry point for the console application.

//#include "StdAfx.h"
#include "704IO.h"
#include "Test704.h"

#ifdef _DEBUG
  #define new DEBUG_NEW
#endif

/////////////////////////////////////////////////////////////////////////////

CWinApp theApp;  // The one and only application object

/////////////////////////////////////////////////////////////////////////////

using namespace std;
/////////////////////////////////////////////////////////////////////////////

int _tmain(int argc, TCHAR *argv[], TCHAR *envp[])
{
int     nRetCode(0);
HMODULE hModule(::GetModuleHandle(NULL));
short   valueRead;

  if (hModule != NULL)
  {
    // Initialize MFC and print and error on failure
    if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
    {
      // TODO: change error code to suit your needs
      _tprintf(_T("Fatal Error: MFC initialization failedn"));
      nRetCode = 1;
    }
    else
    {
      while(true)
      {
        valueRead = PortRead(1, 780, -1);
        _tprintf(_T("Value Read = %in"), valueRead);
        Sleep(1000);  // Sleep for 1s so we can see the value on the screen
      }
    }
  }
  else
  {
    // TODO: change error code to suit your needs
    _tprintf(_T("Fatal Error: GetModuleHandle failedn"));
    nRetCode = 1;
  }

  return nRetCode;
}

/////////////////////////////////////////////////////////////////////////////

And I have the 16 following errors:

Identifier "CWinApp" not defined (line 13)
Identifier "TCHAR" not defined (line 20)
Identifier "TCHAR" not defined (line 20)
Identifier "HMODULE" not defined (line 23)
The global scope doesn't have "GetModuleHandle" (line 23)
Identifier "NULL" not defined (23)
Identifier "AfxWinInit" not defined (29)
The global scope doesn't have "GetCommandLine" (line 29)
Identifier "_tprintf" not defined (line 32)
Identifier "_T" not defined (line 32)
Identifier "_tprintf" not defined (line 40)
Identifier "_T" not defined (line 40)
Identifier "Sleep" not defined (line 41)
Identifier "_tprintf" not defined (line 48)
Identifier "_T" not defined (line 48)
TRK0005: Failed to localize "CL.exe": The specified file cannot be found (line 1)

However I have already executed this code with another version of visual studio (2012) on a windows 7 x32 computer and it worked perfectly. I suspect the error to be about my configuration… do you have any idea?

Содержание

  1. Ошибка компилятора C3861
  2. Remarks
  3. Примеры
  4. Неопределенный идентификатор
  5. Идентификатор не в области
  6. Требуется квалификация пространства имен
  7. Устаревшая функция, вызываемая
  8. ADL и дружественные функции
  9. ‘random’: ошибка не найден идентификатор
  10. 2 ответы

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

Компилятору не удалось разрешить ссылку на идентификатор, даже используя поиск, зависящий от аргументов.

Чтобы устранить эту ошибку, сравните использование идентификатора с объявлением идентификатора для регистра и орфографии. Убедитесь, что операторы разрешения области и директивы пространства имен using используются правильно. Если идентификатор объявлен в файле заголовка, убедитесь, что заголовок включен до ссылки на идентификатор. Если идентификатор должен быть видимым извне, убедитесь, что он объявлен в любом исходном файле, который его использует. Кроме того, убедитесь, что объявление или определение идентификатора не исключается директивами условной компиляции.

Изменения для удаления устаревших функций из библиотеки среды выполнения C в Visual Studio 2015 могут вызвать C3861. Чтобы устранить эту ошибку, удалите ссылки на эти функции или замените их безопасными альтернативами, если таковые есть. Дополнительные сведения см. в разделе «Устаревшие функции».

Если ошибка C3861 появляется после миграции проекта из более старых версий компилятора, могут возникнуть проблемы, связанные с поддерживаемыми версиями Windows. Visual C++ больше не поддерживает создание программ для Windows 95, Windows 98, Windows ME, Windows NT и Windows 2000. Если макросы WINVER _WIN32_WINNT назначены одной из этих версий Windows, необходимо изменить макросы. Дополнительные сведения см. в разделе «Изменение WINVER и _WIN32_WINNT «.

Примеры

Неопределенный идентификатор

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

Идентификатор не в области

Следующий пример приводит к возникновению ошибки C3861, так как идентификатор виден только в области его определения файла, если он не объявлен в других исходных файлах, использующих его.

Исходный файл C3861_a1.cpp :

Исходный файл C3861_a2.cpp :

Требуется квалификация пространства имен

Для классов исключений в стандартной библиотеке C++ требуется std пространство имен.

Устаревшая функция, вызываемая

Устаревшие функции удалены из библиотеки CRT.

ADL и дружественные функции

Следующий пример приводит к возникновению ошибки C3767, так как компилятор не может использовать поиск, зависящий от FriendFunc аргументов:

Чтобы устранить ошибку, объявите друга в области класса и определите его в области пространства имен:

Источник

‘random’: ошибка не найден идентификатор

Я пытаюсь перенести код, написанный для UNIX, в Visual Studio и получаю следующие ошибки

Код длинный, но я уже включен math.h но я все еще получаю эти ошибки. Возможно, эти функции доступны только для UNIX! Если да, то что я могу сделать?

Вот модифицированный образец моего кода (строки, которые дают мне ошибки);

О, я имею в виду, что не пишите имена функций ВСЕМИ ЗАГЛАВНЫМИ буквами. — Sufian Latif

2 ответы

random -> rand (Не забудьте # include для этого)

И напишите initstate перед основным или сделать предварительное заявление.

Как мне написать initstate перед основным или сделать предварительное заявление? initstate вызывается в другой функции (которая называется моей основной) — Ророноа-Зоро

Для прямого объявления поместите подпись функции в начало кода. — Суфиан Латиф

Извините, если это прозвучало банально. Но у меня нет определения initstate . Разве это не должно быть похоже random ? — Ророноа-Зоро

Тогда как ты звонишь initstate ? — Суфиан Латиф

Используйте функции srand() и rand() от stdlib.h с целью. — Суфиан Латиф

Включите stdlib.h и используйте функцию rand ().

Также функции имеют имена в нижнем регистре cos, log, sqrt.

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками c++ visual-studio-2010 random or задайте свой вопрос.

Источник

Что такое необъявленные ошибки идентификатора? Каковы общие причины и как их исправить?

Пример текстов ошибок:

  • Для компилятора Visual Studio: error C2065: 'cout' : undeclared identifier
  • Для компилятора GCC: 'cout' undeclared (first use in this function)

39

Решение

Чаще всего они приходят из-за того, что забывают включить заголовочный файл, содержащий объявление функции, например, эта программа выдаст ошибку «необъявленный идентификатор»:

Отсутствует заголовок

int main() {
std::cout << "Hello world!" << std::endl;
return 0;
}

Чтобы это исправить, мы должны включить заголовок:

#include <iostream>
int main() {
std::cout << "Hello world!" << std::endl;
return 0;
}

Если вы написали заголовок и включили его правильно, заголовок может содержать неправильный включить охрану.

Чтобы узнать больше, смотрите http://msdn.microsoft.com/en-us/library/aa229215(v=vs.60).aspx.

Переменная с ошибкой

Другой распространенный источник ошибки новичка возникает, когда вы неправильно написали переменную:

int main() {
int aComplicatedName;
AComplicatedName = 1;  /* mind the uppercase A */
return 0;
}

Неправильный объем

Например, этот код выдаст ошибку, потому что вам нужно использовать std::string:

#include <string>

int main() {
std::string s1 = "Hello"; // Correct.
string s2 = "world"; // WRONG - would give error.
}

Использовать до объявления

void f() { g(); }
void g() { }

g не был объявлен до его первого использования. Чтобы это исправить, либо переместите определение g до f:

void g() { }
void f() { g(); }

Или добавить декларацию g до f:

void g(); // declaration
void f() { g(); }
void g() { } // definition

stdafx.h не сверху (специфично для VS)

Это зависит от Visual Studio. В VS нужно добавить #include "stdafx.h" перед любым кодом. Код до того, как он игнорируется компилятором, так что если у вас есть это:

#include <iostream>
#include "stdafx.h"

#include <iostream> будет проигнорировано Вам нужно переместить его ниже:

#include "stdafx.h"#include <iostream>

Не стесняйтесь редактировать этот ответ.

54

Другие решения

Рассмотрим похожую ситуацию в разговоре. Представьте, что ваш друг говорит вам: «Боб идет на ужин», а ты не представляешь, кто такой Боб. Вы будете в замешательстве, верно? Твой друг должен был сказать: «У меня есть коллега по работе по имени Боб. Боб подходит к обеду». Теперь Боб объявлен, и вы знаете, о ком говорит ваш друг.

Компилятор выдает ошибку «необъявленный идентификатор», когда вы пытаетесь использовать какой-то идентификатор (который будет именем функции, переменной, класса и т. Д.), И компилятор не видит объявления для него. То есть компилятор понятия не имеет, о чем вы говорите, потому что раньше его не видел.

Если вы получаете такую ​​ошибку в C или C ++, это означает, что вы не сказали компилятору о том, что вы пытаетесь использовать. Объявления часто встречаются в заголовочных файлах, поэтому, скорее всего, это означает, что вы не включили соответствующий заголовок. Конечно, может случиться так, что вы просто не помните, чтобы объявить сущность вообще.

Некоторые компиляторы выдают более конкретные ошибки в зависимости от контекста. Например, пытаясь скомпилировать X x; где тип X не был объявлен с Clang скажет вам «неизвестное имя типа X«. Это гораздо полезнее, потому что вы знаете, что он пытается интерпретировать X как тип. Тем не менее, если у вас есть int x = y;, где y еще не объявлено, он скажет вам «использование необъявленного идентификатора y«потому что есть некоторая двусмысленность в том, что именно y может представлять.

12

У меня была такая же проблема с пользовательским классом, который был определен в пространстве имен. Я пытался использовать класс без пространства имен, вызывая ошибку компилятора «идентификатор» MyClass «не определен».
Добавление

using namespace <MyNamespace>

или используя класс, как

MyNamespace::MyClass myClass;

решил проблему.

5

В C и C ++ все имена должны быть объявлены перед использованием. Если вы попытаетесь использовать имя переменной или функции, которая не была объявлена, вы получите ошибку «необъявленный идентификатор».

Однако функции — это особый случай в C (и только в C), в котором вам не нужно сначала объявлять их. Компилятор C будет предполагать, что функция существует с числом и типом аргументов, как в вызове. Если фактическое определение функции не совпадает, вы получите еще одну ошибку. Этот особый случай для функций не существует в C ++.

Вы исправляете ошибки такого рода, проверяя, что функции и переменные объявлены до их использования. В случае printf вам нужно включить заголовочный файл <stdio.h> (или же <cstdio> в C ++).

Для стандартных функций я рекомендую вам проверить, например, этот справочный сайт, и найдите функции, которые вы хотите использовать. Документация для каждой функции говорит вам, какой заголовочный файл вам нужен.

4

Эти сообщения об ошибках

1.For the Visual Studio compiler: error C2065: 'printf' : undeclared identifier
2.For the GCC compiler: `printf' undeclared (first use in this function)

означает, что вы используете имя printf но компилятор не видит, где было объявлено имя, и, соответственно, не знает, что это значит.

Любое имя, используемое в программе, должно быть объявлено до ее использования. Компилятор должен знать, что обозначает имя.

В этом конкретном случае компилятор не видит объявление имени printf , Как мы знаем (но не компилятор) это имя стандартной функции C, объявленной в заголовке <stdio.h> в C или в заголовке <cstdio> в C ++ и размещены в стандарте (std::) и глобальный (::) (не обязательно) пространства имен.

Поэтому, прежде чем использовать эту функцию, мы должны предоставить объявление ее имени компилятору путем включения соответствующих заголовков.

Например
C:

#include <stdio.h>

int main( void )
{
printf( "Hello Worldn" );
}

C ++:

#include <cstdio>

int main()
{
std::printf( "Hello Worldn" );
// or printf( "Hello Worldn" );
// or ::printf( "Hello Worldn" );
}

Иногда причиной такой ошибки является простая опечатка. Например, давайте предположим, что вы определили функцию PrintHello

void PrintHello()
{
std::printf( "Hello Worldn" );
}

но в основном вы сделали опечатку и вместо PrintHello ты напечатал printHello с строчной буквы «р».

#include <cstdio>

void PrintHello()
{
std::printf( "Hello Worldn" );
}

int main()
{
printHello();
}

В этом случае компилятор выдаст такую ​​ошибку, потому что он не видит объявление имени printHello, PrintHello а также printHello два разных имени, одно из которых было объявлено, а другое не объявлено, но используется в теле основного

3

Это похоже на использование функции без ее объявления. заголовочный файл будет содержать
функция printf (). Включите заголовочный файл в вашу программу, это решение для этого.
Некоторые пользовательские функции могут также вызывать ошибки, если они не были объявлены перед использованием. Если
это используется во всем мире без проб.

0

В большинстве случаев, если вы уверены, что импортировали данную библиотеку, Visual Studio поможет вам с IntelliSense.

Вот что сработало для меня:

Удостоверься что #include "stdafx.h" объявляется первым, то есть вверху всех ваших включений.

0

Понравилась статья? Поделить с друзьями:
  • Зум код ошибки 100068000
  • Зум код ошибки 100006000
  • Зум код ошибки 3078 как исправить
  • Зум выдает ошибку при входе
  • Зубы стали прозрачными как исправить