В настоящее время я использую книгу "Teach Yourself С++" за 21 день, второе издание, чтобы узнать о кодировании на С++, а также Microsoft Visual С++ 2010 Express. В конце главы 1 есть небольшое упражнение о написании и компиляции следующего кода:
#include <iostream>
int main ()
{
cout << "Hello World!\n";
return 0;
}
Довольно просто, не так ли? Однако, к моему удивлению, код не будет компилироваться из-за этой ошибки:
ошибка C2065: 'cout': необъявленный идентификатор
Я начал чистить Web и вскоре нашел несколько решений здесь. Оказывается, мне пришлось добавить
using namespace std;
моему коду!
Однако в книге не было упоминания о пространствах имен, поэтому я решил, что книга устарела. (Он использует директиву #include <iostream.h>
pre-processor!). После нескольких веб-исследований я нашел много информации об пространствах имен namespace std
, а также некоторый исторический фон на <iostream.h>
и <iostream>
, и весь этот поток новых информация довольно запутанная для меня. (Не говоря уже обо всех ненужных результатах Google о медицинских ЗППП...)
Итак, вот некоторые вопросы, которые я получил до сих пор:
- Если я включаю библиотеку
iostream
, зачем нуженnamespace
для поискаcout
? Есть ли ещеcout
где-нибудь, что может вызвать конфликт имен? Если бы кто-то мог предоставить диаграмму для этого, это было бы здорово.
И как бонус, некоторый исторический фон:
-
Что именно было
iostream.h
до того, как оно было изменено наiostream
? -
Разве
namespace
сыграл роль в этом изменении?