Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы включить содержимое стандартного заголовка, необходимо указать его рядом с директивой include.
#include <iostream>// include I/O facilities
Вы можете включать стандартные заголовки в любом порядке — вы можете включить несколько стандартных заголовков или два или более стандартных заголовка, которые определяют один и тот же макрос или один и тот же тип. Не включайте стандартный заголовок в объявление. Не определяйте макросы с теми же именами, что и ключевые слова, прежде чем включать стандартный заголовок.
Заголовок библиотеки C++ включает все остальные заголовки библиотеки C++ для определения необходимых типов. (Всегда включать явным образом любые заголовки библиотекИ C++, необходимые в единице перевода, однако, если вы угадаете неправильно о его фактических зависимостях.) Стандартный заголовок C никогда не включает другой стандартный заголовок. Стандартный заголовок объявляет и определяет только сущности, описанные для него в этом документе.
Каждая функция в библиотеке объявляется в стандартном заголовке. В отличие от стандартного языка C стандартный заголовок никогда не предоставляет маскирование макроса с тем же именем по аналогии с функцией, которая маскирует объявление функции и позволяет добиться того же эффекта. Дополнительные сведения о маскировании макросов см. в разделе Соглашения библиотеки C++.
Все имена, отличные от operator delete и operator new, в заголовках библиотеки C++ определяются в пространстве имен std или в пространстве имен, которое вложено в пространство имен std. Вы ссылаетесь на имя cin, например std::cin. Обратите внимание, что имена макросов не подлежат квалификации пространства имен, поэтому вы всегда записываете __STD_COMPLEX без квалификатора пространства имен.
В некоторых средах перевода включение заголовка библиотеки C++ может привести к добавлению внешних имен, объявленных в пространстве имен std, в глобальное пространство имен с индивидуальными объявлениями using для каждого из таких имен. В противном случае заголовок не содержит никаких имен библиотек в текущее пространство имен.
Стандарт C++ требует, чтобы в стандартных заголовках языка C все внешние имена объявлялись в пространстве имен std. После этого эти имена расширяются в глобальное пространство имен с отдельными using объявлениями для каждого из имен. Однако в некоторых средах преобразования в стандарте C заголовки не включают объявлений пространств имен и все имена объявляются непосредственно в глобальном пространстве имен. Таким образом, для обеспечения максимальной переносимости при работе с пространствами имен следует соблюдать два правила:
Чтобы гарантированно объявить в пространстве
stdимен внешнее имя, которое традиционно объявлено в<stdlib.h>, например, включает заголовок<cstdlib>. Помнить, что имена также могут быть объявлены в глобальном пространстве имен.Чтобы гарантированно объявить в глобальном пространстве имен внешнее имя, объявленное в
<stdlib.h>, добавьте заголовок<stdlib.h>напрямую. Помнить, что имена также могут быть объявлены в пространстве именstd.
Таким образом, если вы хотите std::abort вызвать ненормальное завершение, следует включить <cstdlib>. Если вы хотите вызвать abort, следует включить <stdlib.h>.
Также можно написать объявление:
using namespace std;
которое переводит все имена библиотек в текущее пространство имен. Если разместить это объявление сразу после всех директив include, вы расширите имена в глобальное пространство имен. В оставшейся части записи блока преобразования пространства имен можно не учитывать. Вы также сможете избежать большинства различий между различными средами преобразования.
Если явно не указано иначе, вы не можете определять в своей программе имена в пространстве имен std или пространстве имен, вложенном в пространство имен std.
См. также
Общие сведения о стандартной библиотеке C++
Потокобезопасность в стандартной библиотеке C++