2017-01-13 5 views
-4

Я бы хотел использовать инструкции без std :: в моем коде на C++ в операционной системе Linux (например, cout вместо std :: cout, map <> вместо std :: map <> и т. Д.). Какие заголовки необходимы для его выполнения?Какие заголовки должны быть включены, чтобы оставить префикс std :: в моем коде на C++ в Linux?

+3

'using namespace std;' anyway, http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice – Danh

+1

Нет, не через заголовок. Нет, это не зависит от ОС. –

+2

Вы должны использовать те же заголовки, но пишите 'using namespace std;' в верхней части кода. [** Однако это плохая идея **] (http://stackoverflow.com/q/1452721/1171191). Не делай этого. – BoBTFish

ответ

7

Как комментаторы указал: нет никакого не включает сделать это, нужно просто включить ваши файлы, как обычно, а затем написать using namespace statement

#include <iostream> // cout 
#include <map> // map 

using namespace std; // bring this entire namespace into scope 

Однако; вы должны отметить, а комментаторы указали, this is a terrible ideaособенно в файле заголовка. Для лишних персонажей, которые вам нужно написать, вы можете сэкономить несколько часов после сбоев. Если вы действительно против написания std::, рассмотреть вопрос об ограничении сферы, что вы делаете это в

{ 
    // lots of console printing: 
    using std::cout; 
    cout << ""; 
    ... 
} 
// Now you'd need to write std::cout again 

Это ОС-независимый (решение для Linux является одинаковым для других операционных систем)

+0

Чтобы быть точным, это ужасная идея в глобальной области видимости или пространстве пространства имен в файле заголовка. Он может быть приемлемым (IMO) внутри определения встроенной функции в файле заголовка. –

2

Это не совсем вопрос #include some header, , вы можете опустить явное пространство имен, используя using namespace statement.
Если вы хотите опустить (на самом деле: объединить все элементы станд :: пространства имен в глобальное пространство имен, которое не может быть действительно хорошая практика), вы можете использовать:

using namespace std; 

обычно после директив #includes, но перед любым кодом, ссылающимся на std.

+1

* «Это может быть не очень хорошая практика» * является довольно преуменьшением. –

2

Если у вас есть классы, которые вы хотите включить в пространство имен по умолчанию, вы можете с ними связать их с помощью using. Например:

using std::cout; 

Вы можете импортировать все пространство имен с using namespace, но вы хотите, чтобы читать и понимать «Why is using namespace std considered bad practice?» первым.