Sdílet prostřednictvím


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ů stda 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++