Вопрос про компиляторы? Особенности GCC

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
hungel
Сообщения: 3
Зарегистрирован: 28 мар 2009, 23:35

28 мар 2009, 23:55

Доброго времени суток!

Собственно вопрос такой, у меня Gentoo Linux, и конечно так любимый всеми линуксоидоми GCC 4.3.3.
Так вот решил я выучить С++ взял книжку Джеса Либерти С++ за 21 день.
Возникла такая проблема, при попытке компиляции, одного из примеров книги gcc выдал ошибку:
ошибка: нет декларации ‘cout’ в этой области видимости
ошибка: нет декларации ‘endl’ в этой области видимости
От ошибки я избавился дописав перед началом функции using namespace std;

Вот программа и собственно вопрос зачем нужна эта строчка(Для Вин она не требовалась) и что она означает? И кто знает какие еще особенности у gcc чего ждать к чему готовиться?

Код: Выделить всё

#include <iostream>
using namespace std;
int main()
{
	cout << "Hello there.\n";
	cout << "Here is 5: " << 5 << "\n";
	cout << "The manipulator end1 writes a new line to the screen.";
	cout <<
		endl;
	cout << "Here is a very big number:\t" << 70000 << endl;
	cout << "Here is the sum of 8 and 5:\t" << (8+5) << endl;
	cout << "Here's a fraction:\t\t" << (float) 5/8 << endl;
	cout << (double) 7000*7000 <<
		endl;
	cout << "Don't forget to replace Jesse Liberty with your name...\n";
	cout << "Hungel is a C++ programmer!\n";
	return 0;
}
Просматривать тему и отвечать могу только по вечерам, работаю.
Аватара пользователя
Decoder
Сообщения: 303
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

29 мар 2009, 16:42

Видимо за последнее время произошли какие-то изменения в стандарте С++, которые затронули его стандартную библиотеку.
Раньше в Visual C++ тоже не надо было писать using namespace std при использовании cout и endl, а в новых версиях надо.
hungel
Сообщения: 3
Зарегистрирован: 28 мар 2009, 23:35

29 мар 2009, 18:01

Значит это не особенность gcc! Это радует, значит никаких сюрпризов нет! Тему можно закрывать, просто не знал что в Visual C++ теперь так же, думал это только у меня лыжи не едут. Единственно может кто знает, что это означает, если я правильно понял ИСПОЛЬЗОВАТЬ СТАНДАРТНОЕ ПРОСТРАНСТВО ИМЕН (using namespace std) если конечно std это сокращение от standart. Вопрос для чего это все нужно, если кто знает, расскажите подробней.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

29 мар 2009, 21:53

Конструкция using namespace <name> позволяет обращаться ко всем именам из нэймспейса <name> так, как будто они располагаются в текущем нэймспейсе, то есть без прификса name::.

Наймспейс std специфицирован стандартом как пространство имён библиотеки STL. Все имена этой библиотеки входят в него.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
hungel
Сообщения: 3
Зарегистрирован: 28 мар 2009, 23:35

30 мар 2009, 19:32

Всем спасибо! Тема закрыта!
UProg
Сообщения: 1
Зарегистрирован: 17 сен 2009, 01:25

17 сен 2009, 01:30

Вот статья по схожим проблемам, Перевод программ с Visual C++ на gcc.
Да стандарт стандартом, но кое-что по разному.
Ответить