2015-10-13 7 views
0

Я прочитал в книге C++ ->C++ Programming: Visual Quickstart Guide, что для использования таких утверждений, как cin и cout без std::, вам необходимо добавить строку using namespace std.Нужно ли использовать команду 'using namespace std'?

Однако на данный момент я в настоящее время занимаюсь информатикой на уровне A, используя C++ и CBuilder, и мне не нужно добавлять эту строку в мою программу - поскольку я могу использовать cout и cin в своих без каких-либо ошибок.

На самом деле это не нужно? Или Cbuilder настраивает std сам?

Короче говоря,: Почему я могу пропустить использование std, не объявив, что я его не использую?

+0

@NathanOliver нет, это не дубликат. Я не спрашиваю, должен ли я использовать его, я спрашиваю, почему я могу пропустить с помощью 'std', несмотря на то, что не объявил, что я его не использую – DevRobot

+0

My Плохо. Удалены. – NathanOliver

+1

Проверьте, используется ли 'using namespace std;' в любом из файлов заголовков, которые вы указываете в своем источнике. –

ответ

2

Некоторые компиляторы/библиотеки просто более слабы в отношении Стандарта, чем другие: согласно стандарту ваша программа не должна компилироваться. Загрязнение пространства имен (размещение имен в пространстве имен, в котором они не принадлежат, в этом случае глобальное пространство имен) происходит очень часто и приводит к этим и подобным ошибкам при переключении на другой компилятор и/или стандартную библиотеку.

Если CBuilder не имеет возможности добавить неявный using namespace std; ко всему, что он компилирует (что было бы ужасно), все, что вы можете сказать вам, это все. В любом случае «настройка» не происходит, не уверен, что вы могли бы этим сказать.

1

Нет, вам не нужно это заявление using. Это альтернатива явной ссылке пространства имен внутри вашего кода. Например, вы можете использовать

std::cout << "Hello world" << std::endl; 

, не имея using заявление.

Или, вы можете включить using namespace std заявление, а затем код:

cout << "Hello world" << endl; 

Это выбор. Лично я предпочитаю пропустить заявление using и явно вставить std::, где это необходимо.

0

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