Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка при компиляции : error C2065: 'cout' : undeclared identifier - Почему??  (Прочитано 45998 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
andrystepa
Помогающий

ru
Offline Offline

« : 08-12-2005 18:21 » 

Пишу простейшую консольную программку в среде Visual Studio.Net Enterprise.
Программа из учебника!

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

char Name[24];
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Enter your Name:";
cin.getline (Name, sizeof(Name));
cout << "\nHello, " << Name << "\n\n";
cout << "\nPress Enter to Exit!";
cin.get();

return 0;
}
На работе компьютер - программа компилируется и работает, а дома - не  компилируется!! Выдает ошибку:c:\Programming\Visual Studio Projects\ConsoleApp1\ConsoleApp1.cpp(10): error C2065: 'cout' : undeclared identifier
То есть как 'cout' undeclared identifier? Какой же это identifier?
Полагаю, что все дело в настройках среды программирования (на обоих компах я VS.Net ставил с одного и того же диска). Но в каких настройках дело?
Помогите, кто знает!!
« Последнее редактирование: 17-12-2007 16:57 от Алексей1153++ » Записан
Hooter
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 08-12-2005 22:13 » new

После #include <iostream> поставь:

using namespace std;
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 09-12-2005 05:46 » 

То есть как 'cout' undeclared identifier? Какой же это identifier?

а что не так? Улыбаюсь Идентификатор неопределённой переменной имеется в виду. То есть не переменной, а имени класса или экземпляра класса
« Последнее редактирование: 17-12-2007 16:57 от Алексей1153++ » Записан

andrystepa
Помогающий

ru
Offline Offline

« Ответ #3 : 09-12-2005 17:05 » 

После #include <iostream> поставь:

using namespace std;
Спасибо, это помогло. Но остался вопрос - почему же на компе, что на работе все и без этой строки работало?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4 : 09-12-2005 17:10 » 

У тебя на работе Эта строка была #include "stdafx.h"? Да кстати, зачем для простой консоли, открывать MFC проект?
« Последнее редактирование: 09-12-2005 17:14 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
andrystepa
Помогающий

ru
Offline Offline

« Ответ #5 : 09-12-2005 17:16 » 

То есть как 'cout' undeclared identifier? Какой же это identifier?
а что не так? Улыбаюсь Идентификатор неопределённой переменной имеется в виду. То есть не переменной, а имени класса или экземпляра класса
Я спрашиваю не какой это identifier, а почему компилятор принял идентификатор стандартного потока ввода за какой-то другой идентификатор?! Ведь я включил iostream!
« Последнее редактирование: 17-12-2007 16:59 от Алексей1153++ » Записан
andrystepa
Помогающий

ru
Offline Offline

« Ответ #6 : 09-12-2005 17:25 » 

У тебя на работе Эта строка была #include "stdafx.h"? Да кстати, зачем для простой консоли, открывать MFC проект?
Я не открывал MFC проект, я создал стандартный проект Win32 console application - и строка #include "stdafx.h" появилась именно оттуда. Однако, на работе я создавал проект Win32 application пустой, и этой строки там нет! Но как это повлияло? Строку #include <iostream> я из stdafx.h убрал, чтобы не было дублирования.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #7 : 09-12-2005 17:28 » 

cout - это экземпляр класса ostream. Скорее всего он оказался вне зоны видимости. Поэтому компилятор и ругался на него. 
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
andrystepa
Помогающий

ru
Offline Offline

« Ответ #8 : 09-12-2005 17:41 » 

Но почему он оказался вне зоны видимости? Здесь ведь нет никаких других, кроме std пространств имен!
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 09-12-2005 17:45 » 

Я спрашиваю не какой это identifier, а почему компилятор принял идентификатор стандартного потока ввода за какой-то другой идентификатор?! Ведь я включил iostream!
В iostream определён идентификатор std::cout, просто cout в нём нет
Почему проект скомпилировался на работе?  Кто знает, MS VC глубок и необъятен Улыбаюсь
Для того, чтобы компилятор нашёл стандартный поток вывода, надо либо использовать полностью квалифицированное имя std::cout, либо указать компилятору, что неквалифицированные имена искать в пространстве имён  std инструкцией (statement) using namespace std
« Последнее редактирование: 21-01-2007 12:32 от Finch » Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #10 : 09-12-2005 17:55 » 

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

Не будите спашяго дракона.
             Джаффар (Коша)
andrystepa
Помогающий

ru
Offline Offline

« Ответ #11 : 09-12-2005 18:17 » 

Лишний раз убеждаюсь, что Assembler гораздо проще, чем эти навороченные языки. И зачем было городить столько условностей?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines