Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2010, 13:31   #1
Romantik (Dima)
 
Регистрация: 05.12.2010
Сообщений: 5
По умолчанию Не работает using namespace std;

Итак, имеется программа, которая выводит на экран количество символов в строке.
Код:
#include <string>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
const int max=100;
void main()
{
	char mas[max];
	cout<<"Vvedite vashu stroku"<<endl;
	cin.getline(mas,max);
	strlen(mas);
	cout<<"Kolichestvo elementov v stroke = "<<strlen(mas)<<endl;
}
Обычно привык вместо
using std::cin;
using std::cout;
using std::endl;
писать using namespace std;
Но при написании такой строки, программа компилируется с ошибкой (Visual C++ 2008) - error C2872: max: неоднозначный символ.
И вот мне интересно, правильно ли это, или так быть не должно? Заранее спасибо!

Последний раз редактировалось Stilet; 05.12.2010 в 16:02.
Romantik (Dima) вне форума Ответить с цитированием
Старый 05.12.2010, 14:41   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Вот именно в этом случае и проявляется вся порочность using namespace std; и подобных. После такой директивы вы уже не можете свободно использовать ни одно имя, объявленное в соответствующем пространстве имен. В частности, std::max - это алгоритм, определяющий максимальный из двух переданных ему аргументов. А еще есть такие хорошие названия, как list, vector, min, sort, string и многие другие.
Так что используйте лучше либо объявления using:
Код:
using std::cin;
using std::cout;
using std::endl;
либо явно указывайте для всех идентификаторов принадлежность имени к std:
Код:
std::cout<<"Vvedite vashu stroku"<<std::endl;
std::cin.getline(mas,max);
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 16.12.2010, 18:53   #3
Romantik (Dima)
 
Регистрация: 05.12.2010
Сообщений: 5
По умолчанию

Гром - благодарю за ответ!
Romantik (Dima) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
E2015 Ambiguity between 'std::log(double)' and 'std::log(long double)' Namolem Помощь студентам 3 02.04.2011 20:22
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38
использование конструкции "using <namespace>::<namespace-member>" happy_horror Общие вопросы C/C++ 5 08.03.2009 15:30
namespace std; lacost Общие вопросы C/C++ 8 22.10.2007 13:17
использование using namespace std; che Общие вопросы C/C++ 7 11.10.2007 17:13