Имя int32_t
также появляется в глобальной области видимости заголовка библиотеки C stdint.h
.Это может сделать его глобально видимым также в C ++.
Раздел [Заголовки] говорит:
... содержимое каждого заголовка cname совпадает с заголовком соответствующего заголовка name.h , как указано в стандартной библиотеке языка C.Однако в стандартной библиотеке C ++ объявления (за исключением имен, которые определены как макросы в C) находятся в пределах области имен пространства имен std. Не указано, будут ли эти имена (включая любые перегрузки, добавленные в [language.support] через [thread] и [depr]) сначала объявлены в глобальной области пространства имен и затем внедрены в пространство имен stdс помощью явных объявлений использования .
Стандарт также содержит общий оператор :
Заголовок C ++ может включать другие заголовки C ++.
Поэтому, включив <iostream>
, вы гарантируете для просмотра объектов потока, но также может получить доступ и к некоторым другим функциям библиотеки..
Поскольку эти косвенные включения не определены, результат варьируется в зависимости от реализации.Таким образом, программа всегда должна включать все необходимые заголовки, чтобы быть переносимой на другой компилятор.