Compartilhar via


Usando cabeçalhos da Biblioteca C++

Você inclui os conteúdos de um cabeçalho padrão ao nomeá-lo em uma diretiva de inclusão.

#include <iostream>// include I/O facilities

É possível incluir os cabeçalhos padrão em qualquer ordem, um cabeçalho padrão mais de uma vez ou dois ou mais cabeçalhos padrão que definem a mesma macro ou o mesmo tipo. Não inclua um cabeçalho padrão dentro de uma declaração. Não defina macros que têm os mesmos nomes das palavras-chave antes de incluir um cabeçalho padrão.

Um cabeçalho da biblioteca C++ inclui quaisquer outros cabeçalhos da biblioteca C++ necessários para definir tipos necessários. (Sempre inclua explicitamente qualquer cabeçalho da biblioteca C++ necessário em uma unidade de tradução, para que você não adivinhe errado sobre suas dependências reais). Um cabeçalho C padrão nunca inclui outro cabeçalho padrão. Um cabeçalho padrão declara ou define apenas as entidades descritas para ele neste documento.

Cada função na biblioteca é declarada em um cabeçalho padrão. Ao contrário do C Padrão, o cabeçalho padrão nunca fornece uma macro de mascaramento com o mesmo nome que a função que mascara a declaração da função e alcança o mesmo efeito. Para obter mais informações sobre o macros de mascaramento, consulte Convenções da Biblioteca C++.

Todos os nomes que não sejam operator delete e operator new nos cabeçalhos da biblioteca C++ são definidos no namespace std ou em um namespace aninhado no namespace std. Você se refere ao nome cin, por exemplo, como std::cin. No entanto, observe que os nomes de macro não estão sujeitos à qualificação de namespace, assim, você sempre gravará __STD_COMPLEX sem um qualificador de namespace.

Em alguns ambientes de translação, a inclusão de um cabeçalho de biblioteca C++ pode elevar nomes externos declarados no namespace std para o namespace global, com declarações using individuais para cada um dos nomes. Caso contrário, o cabeçalho não* introduzirá nenhum nome de biblioteca no namespace atual.

O Padrão C++ requer que os cabeçalhos Padrão C declarem todos os nomes externos no namespace std e, em seguida, eleve-os ao namespace global com declarações using individuais para cada um dos nomes. Porém, em alguns ambientes de translação, os cabeçalhos Padrão C não incluem declarações de namespace, declarando todos os nomes diretamente no namespace global. Assim, a maneira mais portátil de lidar com os namespaces é seguir duas regras:

  • Para declarar de forma segura no namespace std um nome externo tradicionalmente declarado em <stdlib.h>, por exemplo, incluindo o cabeçalho <cstdlib>. Saiba que o nome também pode ser declarado no namespace global.

  • Para declarar de forma segura no namespace global um nome externo declarado em <stdlib.h>, inclua diretamente o cabeçalho <stdlib.h>. Saiba que o nome também pode ser declarado no namespace std.

Portanto, se você deseja chamar std::abort para causar um encerramento anormal, deverá incluir <cstdlib>. Se você deseja chamar abort, deverá incluir <stdlib.h>.

Como alternativa, você pode escrever a declaração:

using namespace std;

o que leva a todos os nomes de biblioteca para o namespace atual. Se você escrever essa declaração imediatamente após incluir todas as diretivas, elevará os nomes para o namespace global. Posteriormente, você pode ignorar as considerações de namespace no restante da unidade de translação. Você também pode evitar a maioria das diferenças entre ambientes de translação diferentes.

Salvo indicação em contrário, não é possível definir nomes no namespace std ou em um namespace aninhado no namespace std, dentro do seu programa.

Confira também

Visão geral da biblioteca padrão C++
Acesso Thread-Safe na Biblioteca Padrão C++