Používání hlaviček knihoven C++
Obsah standardní hlavičky zahrnete jeho pojmenováním do direktivy include.
#include <iostream>// include I/O facilities
Standardní záhlaví můžete zahrnout v libovolném pořadí, standardní záhlaví více než jednou nebo dvě nebo více standardních záhlaví, která definují stejné makro nebo stejný typ. Nezahrnujte do deklarace standardní hlavičku. Před zahrnutím standardní hlavičky nedefinujte makra se stejnými názvy jako klíčová slova.
Hlavička knihovny C++ obsahuje všechny ostatní hlavičky knihovny C++, které potřebuje k definování potřebných typů. (Vždy zahrňte explicitně všechny hlavičky knihovny C++, které jsou potřeba v jednotce překladu, ale nechtěněte špatně ohledně jeho skutečných závislostí.) Standardní hlavička jazyka C nikdy neobsahuje jinou standardní hlavičku. Standardní hlavička deklaruje nebo definuje pouze entity popsané v tomto dokumentu.
Každá funkce v knihovně je deklarována ve standardní hlavičce. Na rozdíl od standardního jazyka C standardní hlavička nikdy neposkytuje makro maskování se stejným názvem jako funkce, která maskuje deklaraci funkce a dosahuje stejného efektu. Další informace o maskování maker naleznete v tématu Konvence knihovny jazyka C++.
Všechny názvy kromě operator delete
operator new
hlaviček knihovny jazyka C++ jsou definovány v std
oboru názvů nebo v oboru názvů vnořeném v rámci std
oboru názvů. Odkazujete na název cin
, například jako std::cin
. Všimněte si však, že názvy maker nejsou předmětem kvalifikace oboru názvů, takže vždy píšete __STD_COMPLEX
bez kvalifikátoru oboru názvů.
V některých prostředích překladu, včetně hlavičky knihovny jazyka C++, můžou být vložené externí názvy deklarované v std
oboru názvů do globálního oboru názvů také s jednotlivými using
deklaracemi pro každý z názvů. Jinak hlavička nezavádí do aktuálního oboru názvů žádné názvy knihoven.
Standard jazyka C++ vyžaduje, aby hlavičky C Standard deklarovaly všechny externí názvy v oboru názvů std
a pak je nasypat do globálního oboru názvů s jednotlivými using
deklaracemi pro každý z názvů. V některýchprostředích Nejnosnějším způsobem, jak pracovat s obory názvů, je tedy dodržovat dvě pravidla:
Pro jistotu deklarovat v oboru názvů
std
externí název, který je tradičně deklarován<stdlib.h>
, například zahrnout hlavičku<cstdlib>
. Nezapomeňte, že název může být deklarován také v globálním oboru názvů.Pro jistotu deklarujte v globálním oboru názvů externí název deklarovaný v
<stdlib.h>
, zahrňte hlavičku<stdlib.h>
přímo. Nezapomeňte, že název může být deklarován také v oboru názvůstd
.
Proto pokud chcete volat std::abort
, aby způsobovat neobvyklé ukončení, měli byste zahrnout <cstdlib>
. Pokud chcete volat abort
, měli byste zahrnout <stdlib.h>
.
Alternativně můžete napsat deklaraci:
using namespace std;
tím se všechny názvy knihoven přenese do aktuálního oboru názvů. Pokud tuto deklaraci napíšete okamžitě za všechny direktivy include, nasadíte názvy do globálního oboru názvů. Ve zbývající části jednotky překladu můžete následně ignorovat aspekty oboru názvů. Vyhněte se také většině rozdílů v různých prostředích překladu.
Pokud není výslovně uvedeno jinak, nesmíte definovat názvy v std
oboru názvů ani v oboru názvů vnořeném do std
oboru názvů v rámci programu.
Viz také
Standardní knihovna C++ – přehled
Bezpečný přístup z více vláken ve standardní knihovně C++