Ошибка c2065 cout необъявленный идентификатор

I ran across this error after just having installed vs 2010 and just trying to get a nearly identical program to work.

I’ve done vanilla C coding on unix-style boxes before, decided I’d play with this a bit myself.

The first program I tried was:

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
    cout << "Hello World!";
    return 0;
}

The big thing to notice here… if you’ve EVER done any C coding,

int _tmain(int argc, _TCHAR* argv[])

Looks weird. it should be:

int main( int argc, char ** argv )

In my case I just changed the program to:

#include <iostream>
using namespace std;

int main()
{
     cout << "Hello world from  VS 2010!n";
     return 0;
}

And it worked fine.

Note: Use CTRL + F5 so that the console window sticks around so you can see the results.

Я только начал разбираться с плюсами. И тут же воткнулся в какой-то непонятный для меня косяк.

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

using namespace std;

int main()
{
    cout << "Hello World" << endl;
}

Вроде все верно… Но при компиляции ошибка:

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

Я почитал у вас тут похожие темы. Пишут, что область имен надо объявить, она есть. Вроде вообще все как надо. Я использую VS 2017 для написания кода. Объясните, пожалуйста, что не так.

αλεχολυτ's user avatar

αλεχολυτ

28.3k10 золотых знаков57 серебряных знаков118 бронзовых знаков

задан 8 сен 2017 в 8:21

Kazzi's user avatar

0

Вот это

#include <iostream>

вы, вероятно, добавили сами перед

#include "stdafx.h"

Поменяйте их местами. stdafx.h — это такой оченно хитрый вспомогательный заголовочный файл (который я бы, честно говоря, вообще не использовал :) — но вы уже сделали проект с использованием предварительно скомпилированного заголовка…) Пусть себе идет первым…

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

using namespace std;

int main()
{
    cout << "Hello World" << endl;
}

ответ дан 8 сен 2017 в 8:23

Harry's user avatar

HarryHarry

215k15 золотых знаков117 серебряных знаков228 бронзовых знаков

2

попробуйте так

#include <iostream>
using namespace std;
int main()
{

   cout << "Hello World ";
   return 0;
}

ответ дан 8 сен 2017 в 8:25

Philip Pilipchuk's user avatar

std::cout<<"Hello World";

insolor's user avatar

insolor

45.9k16 золотых знаков54 серебряных знака95 бронзовых знаков

ответ дан 8 сен 2017 в 8:25

North Face's user avatar

North FaceNorth Face

9301 золотой знак9 серебряных знаков25 бронзовых знаков

yk92

0 / 0 / 2

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

Сообщений: 35

1

07.11.2010, 20:35. Показов 109484. Ответов 35

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


Студворк — интернет-сервис помощи студентам

видаёт мне такую ошибку:
1>c:documents and settingsадминистратор.home-8a34687735мои документыvisual studio 2010projectslab 1.3lab 1.3lab 1.3.cpp(41): error C2065: cout: необъявленный идентификато
ето для cin, cout u endl.
Подскажите что делать
вот текст програми

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
 
#include "StdAfx.h"
using namespace std;
 
int main (void)
{
int massiv[5];
int min;
int srednee;
for(int i=0;i<5;i++)
{
cin>>massiv[i];
}
_asm 
{
lea esi,massiv;
mov ecx,5;
mov edx,[esi];
xor edi,edi;
 
cikl: mov ebx,[esi];
      add edi,ebx;
      cmp ebx,edx;
      jg lab1;
      mov edx,ebx;
lab1:
      dec ecx;
      add esi,4;
      cmp ecx,0;
      jnz cikl;
      mov min,edx;
      mov srednee,edi;
 
}
for(int i=0;i<5;i++)
{
cout<<massiv[i]<<" ";
}
cout<<endl<<"MIN->"<<min<<endl;
cout<<"Tselaya chast ot Srednego arifmeticheskogo->"<<srednee/5;
getchar();
getchar();
return(0);
}



0



Programming

Эксперт

94731 / 64177 / 26122

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

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

07.11.2010, 20:35

35

Ignat

1260 / 798 / 108

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

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

07.11.2010, 22:38

2

Надо сначала подключить Stdafx, а уже потом iostream, короче говоря поменять местами строки.

C++
1
2
#include "stdafx.h"
#include <iostream>



6



vaselo

19 / 19 / 5

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

Сообщений: 247

07.11.2010, 23:40

3

C++
1
2
3
4
5
6
7
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;

в вижуале он почему-то требует вот такого описания. Может ты еще и фигурную скобку не открыл?



0



M128K145

Эксперт JavaЭксперт С++

8381 / 3613 / 419

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

Сообщений: 10,708

08.11.2010, 11:02

4

vaselo, уже есть

C++
1
using namespace std;

а избыточность ни к чему. Правильный ответ во втором посте



0



Antariya

0 / 0 / 0

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

Сообщений: 4

08.06.2011, 23:23

5

А что делать в 10й висуал студо(экспресс)?
Та же ошибка:
error C2065: endl: необъявленный идентификатор
error C2065: end: необъявленный идентификатор.
Добавление строчки:

C++
1
using namespace std;

не помогает.

(Либерти, упражнение 2, день 1)

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "stdafx.h"
#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{
    int x = 5;
    int y = 7;
    std::cout << endl;
    std::cout << x + y << " " << x * y;
    std::cout << end;
    return 0;
}



0



593 / 531 / 76

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

Сообщений: 1,585

08.06.2011, 23:43

6

Antariya,
std::endl;
+ опечатка в 10 строке

Цитата
Сообщение от Antariya
Посмотреть сообщение

не помогает.

а вот это странно



0



Эксперт JavaЭксперт С++

8381 / 3613 / 419

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

Сообщений: 10,708

09.06.2011, 00:13

7

Antariya, а мне кажется, что кто-то пытается нас обмануть. При том коде, который сейчас должны вылетать две ошибки:
error C2065: endl: необъявленный идентификатор
error C2065: end: необъявленный идентификатор.
при добавлении юзинга должна вылетать только одна ошибка
error C2065: end: необъявленный идентификатор.



0



0 / 0 / 0

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

Сообщений: 4

09.06.2011, 12:40

8

OstapBender, именно как в книге написала. Попробовала исправить.
Ошибки:
warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
warning C4551: в вызове функции отсутствует список аргументов
error C2568: идентификатор: не удается разрешить перегрузку функции
warning C4551: в вызове функции отсутствует список аргументов
M128K145, если бы обманывала. Только начала изучение, имела дело только с бейсиком в школе.



0



3339 / 2601 / 316

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

Сообщений: 5,938

09.06.2011, 12:49

9

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



0



Antariya

0 / 0 / 0

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

Сообщений: 4

09.06.2011, 12:51

10

kazak, А. Точно. Извиняюсь.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// day.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>;
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
        int x = 5;
        int y = 7;
        std::endl;
        std::cout << x + y << " " << x * y;
        std::end;
        return 0;
}

warning C4067: непредвиденные лексемы за директивой препроцессора, требуется newline
warning C4551: в вызове функции отсутствует список аргументов
error C2568: идентификатор: не удается разрешить перегрузку функции
warning C4551: в вызове функции отсутствует список аргументов



0



diagon

Higher

1953 / 1219 / 120

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

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

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

09.06.2011, 12:53

11

C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
        int x = 5;
        int y = 7;
        cout << endl <<  x + y << " " << x * y << endl;
        return 0;
}

После #include <iostream> не надо точку с запятой
если пишите using namespace std; то нет смысла писать std::
endl нужно использовать прямо в потоке.
end- непонятно что такое, видимо опечатка в endl



1



kazak

3339 / 2601 / 316

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

Сообщений: 5,938

09.06.2011, 12:54

12

Цитата
Сообщение от Antariya
Посмотреть сообщение

C++
1
2
3
std::endl;
 std::cout << x + y << " " << x * y;
 std::end;

endl в отдельности не используется, end вообще не существует.

C++
1
2
3
std::cout << std::endl;
 std::cout << x + y << " " << x * y;
 std::cout << std::endl;



1



0 / 0 / 0

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

Сообщений: 4

09.06.2011, 13:44

13

kazak, diagon, всё получилось, огромное спасибо.



0



Oleg35

0 / 0 / 0

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

Сообщений: 8

30.10.2012, 19:41

14

Здравствуйте, а можете мне помочь?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "stdafx.h"
#include <iostream>
 
int main()
{
    int a, b;
    char op; //operator
    int res; //result
 
    cout << "Enter expression ";
    cin >> a;
    cin >> op;
    cin >> b;
 
    if (op== '+')
        res = a+b;
    else if (op == '-')
        res = a-b;
    else if (op == '*')
        res = a*b;
    else if (op == '/')
        res = a/b;
    else
    {   cout << "Bad operator";
        return 0;
    }
        
    
    cout << "Result = ";
    cout << res;
    cout << end;
    
    return 0;
}

выдает (при отладке)

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

(Урок 2- http://data.com1.ru/prog-schoo… esson2.mp4

Visual 08-Упрощенная(тоесть только для C++)



0



M128K145

Эксперт JavaЭксперт С++

8381 / 3613 / 419

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

Сообщений: 10,708

30.10.2012, 20:56

15

Oleg35, используйте std::cout, std::cin и std::endl или после инклудов напишите

C++
1
using namespace std;

Первый вариант предпочтительнее



0



Мой лучший друг-отладчик!

167 / 167 / 30

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

Сообщений: 662

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

30.10.2012, 22:09

16

M128K145, в ходе обучения использование using namespace std; вместо std:: способствует, как мне кажется, лучшему восприятию кода.И на ранних этапах обучения программированию использвание пространства предпочтительнее.

Но с другой стороны, в профессиональном программировании, насколько я знаю, юзать нужно только std::.Мне тут все модеры это твердили.И уже за собой тоже заметил — постоянно пишу std:: вместо namespace



0



Эксперт JavaЭксперт С++

8381 / 3613 / 419

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

Сообщений: 10,708

30.10.2012, 23:20

17

Цитата
Сообщение от ZaMaZaN4iK
Посмотреть сообщение

M128K145, в ходе обучения использование using namespace std; вместо std:: способствует, как мне кажется, лучшему восприятию кода.И на ранних этапах обучения программированию использвание пространства предпочтительнее.

если постоянно привыкать спать на потолке(ну как начинающий), то со временем вы уже с трудом сможете переучится спать как и все люди — на диване, который стоит на полу и то, если захочется



0



0 / 0 / 0

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

Сообщений: 8

31.10.2012, 15:09

18

Вставил не помогло, теперь выдает это

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



0



Мой лучший друг-отладчик!

167 / 167 / 30

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

Сообщений: 662

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

31.10.2012, 15:14

19

Нет в С++ оператора end!!!Есть endl.
Замените end на endl



1



0 / 0 / 0

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

Сообщений: 8

31.10.2012, 15:21

20

Ура, спасибо большое. Вот оказывается где собака была зарыта.



0



  • Remove From My Forums
  • Question

  • Im having trouble building a programme when i do it fails and says this:

    error C2065: ‘cout’ : undeclared identifier

    I built a programme before using «cout» which works fine called test here it is

    /*
    this is a test
    */
     #include «StdAfx.h»

    #include <iostream>
    using namespace std;

    int main()
    {
     cout << «hi this is a test «

     
     ;system («pause»);

      ;return 0;
    }

    that one works well it is a CLR console application.

    i am using microsoft visual basic 2010

    the programme that doesnt work and gets the error

    error C2065: ‘cout’ : undeclared identifier

    i think is a win32 application

    i am new to C++ and have just started learning,can anyone help?

Answers

  • Hi,

    In Visual Studio there are two kinds of *.exe binaries, windows applications and console applications. A console application is has a single console window where all input, output and errors are displayed. While a windows application usually presents a window
    and interacts with the user using the Microsoft GUI.

    For developers, the main difference between Windows Applications and Console Applications is that the former’s entry point is WinMain() or wWinMain(), while the latter’s entry point is main() or wmain().

    We can use cout in console applications to output strings to the console window. While in Windows applications, cout cannot be used and we can use other APIs such as TextOut instead to output on the window.

    So please separate console applications from windows applications. It is not proper for us to mix the two types of applications together.

    I hope this reply is helpful to you.
    Best regards,


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    • Marked as answer by

      Monday, November 28, 2011 9:03 PM

Я работаю над частью «драйвера» моего назначения программирования, и я продолжаю получать эту абсурдную ошибку:

ошибка C2065: ‘cout’: необъявленный идентификатор

Я даже пытался использовать std:: cout, но я получаю еще одну ошибку, которая говорит: IntelliSense: пространство имен «std» не имеет члена «cout» , когда у меня есть объявленный с использованием пространства имен std, включая iostream +, я даже пытался использовать ostream

Я знаю, что это стандартный вопрос о нобе, но это меня насторожило, и я новичок (это означает: я запрограммировал раньше…)

#include <iostream>
using namespace std;

int main () {
    cout << "hey" << endl;
 return 0;
}

Я использую Visual Studio 2010 и запускаю Windows 7. Все файлы .h имеют «использование пространства имен std» и включают iostream и ostream.

4b9b3361

Ответ 1

В Visual Studio вы должны #include "stdafx.h" и быть первым включением файла cpp. Например:

Это не будет работать.

#include <iostream>
using namespace std;
int main () {
    cout << "hey" << endl;
    return 0;
}




#include <iostream>
#include "stdafx.h"
using namespace std;
int main () {
    cout << "hey" << endl;
    return 0;
}

Это подойдет.

#include "stdafx.h"
#include <iostream>
using namespace std;
int main () {
    cout << "hey" << endl;
    return 0;
}

Вот отличный ответ о том, что делает заголовок stdafx.h.

Ответ 2

напишите этот код, он отлично работает.

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

using namespace std;

int main()
{
 cout<<"Hello World!";
  return 0;
}

Ответ 3

У меня была такая же проблема на Visual Studio С++ 2010. Это легко исправить. Над функцией main() просто замените стандартные строки с этим ниже, но с символом фунта перед включенными.

# include "stdafx.h"
# include <iostream>
using  namespace std;

Ответ 4

include "stdafx.h" в порядке

Но вы не можете использовать cout, если вы не включили using namespace std

Если вы не включили пространство имен std, вам нужно написать std::cout вместо простого cout

Ответ 5

Я видел, что если вы используете

#include <iostream.h>

тогда вы получите эту проблему.

Если вы используете

#include <iostream>  

(уведомление — без .h)

то вы не получите проблему, о которой вы упомянули.

Ответ 6

Если вы начали проект, требующий строки #include "stdafx.h", поставьте его первым.

Ответ 7

Нижеприведенный код компилируется и запускается правильно для меня, используя gcc. Попробуйте скопировать/вставить это и посмотреть, работает ли он.

#include <iostream>
using namespace std;

int bob (int a) { cout << "hey" << endl; return 0; };

int main () {
    int a = 1;
    bob(a);
    return 0;
}

Ответ 8

Если единственным файлом, который вы включаете, является iostream, и он все еще говорит undefined, то, возможно, iostream не содержит того, что он должен был. Возможно ли, что у вас есть пустой файл, совпадающий по имени «iostream» в вашем проекте?

Ответ 9

Я видел похожие вещи, когда я использовал расширение .c файла с кодом С++. Кроме этого, я должен согласиться со всеми о багги установке. Это работает, если вы попытаетесь скомпилировать проект с более ранней версией VS? Попробуйте VС++ Express 2008. Его бесплатно на msdn.

Ответ 10

Такое глупое решение в моем случае:

// Example a
#include <iostream>    
#include "stdafx.h"

Выше было указано в качестве примера a, когда я изменил его, чтобы он был похож на пример b ниже…

// Example b
#include "stdafx.h"
#include <iostream>  

Мой код составлен как шарм. Попробуйте, гарантированно сработает.

Ответ 11

прежде чем вы начнете эту программу, избавитесь от всего кода и сделайте простой мир привет внутри основного. Включать только iostream и использовать пространство имен std;.
Постепенно добавьте его, чтобы найти свою проблему.

cout << "hi" << endl;

Ответ 12

У меня есть VS2010, Beta 1 и Beta 2 (один на моей рабочей машине и один на дому), и я использовал std множество без проблем. Попробуйте ввести:

std::

И посмотрите, дает ли Intellisense что-нибудь. Если это дает вам обычный материал (abort, abs, acos и т.д.), За исключением cout, ну тогда это довольно головоломка. Определенно посмотрите на ваши заголовки С++ в этом случае.

Помимо этого, я бы просто добавил, чтобы убедиться, что вы используете обычный пустой проект (не CLR, где Intellisense поврежден), и что вы на самом деле пытались построить проект хотя бы один раз. Как я уже упоминал в комментарии, VS2010 анализирует файлы после добавления include; возможно, что что-то застряло в парсере, и он не сразу «нашел» cout. (В этом случае попробуйте перезапустить VS, возможно?)

Ответ 13

У меня была такая же проблема при запуске проекта ms С++ 2010 с нуля — я удалил все файлы заголовков, сгенерированные с помощью ms, но использовал:

#include "stdafx.h"
#include <iostream>
using namespace std;

int main() {
   cout << "hey" << endl;
   return 0;
}

Мне пришлось включить stdafx.h, поскольку это вызвало ошибку, в которой он не был.

Ответ 14

Возьмите код

#include <iostream>
using namespace std;

из вашего .cpp файла, создайте файл заголовка и поместите его в файл .h. Затем добавьте

#include "whatever your header file is named.h"

в верхней части вашего .cpp-кода. Затем запустите его снова.

Ответ 15

Вы уверены, что он компилируется как С++? Проверьте имя файла (он должен заканчиваться на .cpp). Проверьте настройки проекта.

Нет ничего плохого в вашей программе, а cout находится в namespace std. Ваша установка VS 2010 Beta 2 является дефектной, и я не думаю, что это просто ваша установка.

Я не думаю, что VS 2010 готов к С++. Стандартная программа «Hello, World» не работала на бета-версии 1. Я просто попытался создать тестовое консольное приложение Win32, а сгенерированный файл test.cpp не имел функции main().

У меня действительно очень плохое чувство о VS 2010.

Ответ 16

Попробуй, это сработает. Я проверил его в Windows XP, Visual Studio 2010 Express.

#include "stdafx.h"
#include <iostream>
using namespace std;

void main( ) 
{
   int i = 0;
   cout << "Enter a number: ";
   cin >> i;
}

Ответ 17

Когда вы создали свой проект, вы не установили правильно использовать предварительно скомпилированные заголовки. Измените его в свойствах → C/С++ → предварительно скомпилированные заголовки.

Ответ 18

В Visual Studio используйте весь ваш фильтр заголовка ниже «stdafx.h».

Ответ 19

Включите библиотеку std, вставив следующую строку вверху вашего кода:

using namespace std;

Ответ 20

обычно сохраняется в папке C:Program FilesMicrosoft Visual Studio 8VCinclude. Сначала проверьте, все ли он там. Затем выберите «Инструменты + варианты», «Проекты и решения», «Каталоги VС++», выберите «Включить файлы» в поле «Показать каталоги для» и дважды проверьте, что включение (VCInstallDir) включено в список.

Ответ 21

Я столкнулся с этой ошибкой после того, как установил vs 2010 и просто пытался получить почти идентичную программу для работы.

Я уже делал кодировку ваниль C в коробках в стиле unix, решил, что немного поиграю с этим.

Первая программа, которую я пробовал, была:

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
    cout << "Hello World!";
    return 0;
}

Большая вещь, чтобы заметить здесь… если вы все сделали C-кодирование,

int _tmain(int argc, _TCHAR* argv[])

Выглядит странно. это должно быть:

int main( int argc, char ** argv )

В моем случае я просто изменил программу на:

#include <iostream>
using namespace std;

int main()
{
     cout << "Hello world from  VS 2010!n";
     return 0;
}

И он отлично работал.

Примечание. Используйте CTRL + F5, чтобы окно консоли закрывалось, чтобы вы могли видеть результаты.

Ответ 22

Просто используйте printf!

Включите stdio.h в заголовочный файл stdafx.h для printf.

Ответ 23

Я пришел сюда, потому что у меня была такая же проблема, но когда я сделал #include "stdafx.h", он сказал, что не нашел этот файл.
Что для меня было трюком: #include <algorithm>.
Я использую Microsoft Visual Studio 2008.
Это то, что вы можете использовать тогда, в том числе. ‘count’: Ссылка

Ответ 24


Это был компилятор — теперь я использую Eclipse Galileo, и программа работает как чудо


Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка c2059 синтаксическая ошибка константа
  • Ошибка c2059 синтаксическая ошибка using namespace
  • Ошибка c2059 синтаксическая ошибка return
  • Ошибка c203f дэу нексия n150

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии