DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 154419 - Última revisão: quarta-feira, 19 de março de 2008 - Revisão: 5.0

 

Nesta página

Sumário

Este artigo apresenta uma lista de perguntas freqüentes (FAQs) sobre as bibliotecas C++ padrão e as respostas para essas perguntas. Para obter informações adicionais sobre as bibliotecas C++ padrão, consulte a especificação padrão ANSII e o MSDN Library.

Mais Informações

Perguntas freqüentes sobre o padrão C++ Libraries

T1: o que a biblioteca C++ padrão contém?

A1: A biblioteca C++ padrão fornece uma estrutura extensível e contém componentes para o suporte ao idioma, diagnóstico, utilitários gerais, seqüências de caracteres, localidades, biblioteca de modelo padrão (recipientes, iteradores, algoritmos e algarismos) e entrada/saída.

A biblioteca C++ padrão pode ser dividida nas seguintes categorias:
  1. Componentes de STL (Template Library) padrão fornecem um C++ programa com acesso a um subconjunto das estruturas de dados e algoritmos mais amplamente usados. STL cabeçalhos podem ser agrupados em três conceitos principais de organização:
    • recipientes: classes de modelo que oferece suporte a formas comuns de organizar dados, tais como <vector>, <list>, <deque>, <stack>, <queue> <set> e <map>.
    • algoritmos: funções de modelo para executar operações comuns em seqüências de objetos, tais como <functional>, <algorithm> e <numeric>.
    • iteradores: a colar cola algoritmos e recipientes juntos, como <utility>, <iterator> e <memory>.
  2. Entrada/saída inclui componentes para encaminhar declarações de iostreams (<iosfwd>), objetos iostreams predefinidos (<iostream>), classes base iostreams (<ios>), fluxo de buffer (<streambuf>), o fluxo de formatação e manipulators (<iosmanip>, <istream>, <ostream>), seqüência de caracteres (<sstream>) de fluxos e fluxos de arquivo (<fstream>).
  3. Outros cabeçalhos C++ padrão incluem:
    • suporte de idioma: componentes para definições de tipo comuns usadas em toda a biblioteca (<cstddef>), características dos tipos predefinidos (<limits>, <cfloat>, <climits>), funções de suporte de início e término de um programa C++ (<cstdlib>), suporte para gerenciamento de memória dinâmica (<new>), suporte para identificação do tipo dinâmico (<typeinfo>), suporte para processamento de exceção (<exception>) e outro suporte de tempo de execução (<cstdarg>, <ctime>, <csetlmp>, <csignal>).
    • Diagnóstico: componentes para relatar vários tipos de excepcionais condições (<stdexcept>), documentar declarações de programa (<cassert>) e uma variável global para códigos de erro número (<cerrno>).
    • seqüências de caracteres: <string> componentes para classes de seqüência de caracteres (<seqüência>) e utilitários de seqüência terminada por caractere nulo (<cctype>, <cwctype>, <cwchar>).
    • localização: componentes que programas de C++ podem usar para encapsular diferenças culturais. O recurso de localidade inclui suporte de internacionalização para seqüência de caracteres de classificação e agrupamento de caracteres, numérico, monetário e formatação de data/hora e análise e recuperação de mensagem (<locale>, <clocale>).


Q2: qual é a diferença entre biblioteca C Runtime e biblioteca C++ padrão? Bibliotecas de que serão a biblioteca de tempo de execução opções do compilador, como /ML /MT , /md , / MLd , / MTd , e / MDd incluem?

A2: O Visual C++ 5.0 e posterior incluem as seguintes bibliotecas juntamente com as bibliotecas Microsoft Foundation Classes (MFC):
  • Biblioteca C Runtime básica
  • Biblioteca C++ padrão
Recolher esta tabelaExpandir esta tabela
Biblioteca de tipos e opções de compilador relacionadosBiblioteca C Runtime básica / biblioteca C++ padrão
Single-threaded (/ ML)LIBC.LIB / LIBCP.LIB
Depuração Single-threaded (/ MLd)LIBCD.LIB / LIBCPD.LIB
Multithreaded (/ MT)LIBCMT.LIB / LIBCPMT.LIB
Depuração multithreaded (/ MTd)LIBCMTD.LIB / LIBCPMTD.LIB
DLL multithreaded (/ MD)MSVCRT.LIB / MSVCPRT.LIB
Depurar /DLL multithreaded (MDd)MSVCRTD.LIB / MSVCPRTD.LIB
Observação /ML e opções de compilador de biblioteca /MLd para bibliotecas estáticas single-threaded foram removidas do Visual C++ 2005 e em versões posteriores do Visual C++.

Observação MSVCPRT.lib e MSVCPRTD.lib são bibliotecas estáticas e fazer não tem quaisquer bibliotecas de vínculo dinâmico (DLLs) diretamente relacionada a eles. Essas bibliotecas também são dependentes MSVCRT.lib e MSVCRTD.lib, respectivamente. Se você tiver quaisquer aplicativos que usam MSVCPRT.lib ou MSVCPRTD.lib e você usar a opção "Ignorar padrão Library" ( / NOD ou NODEFAULTLIB), certifique-se de vincular MSVCPRT.lib (ou MSVCPRTD.lib) e MSVCRT.lib (ou MSVCRTD.lib) com o seu aplicativo. Caso contrário, você receberá erros de vinculador (LNK2001: não resolvidos de itens externos em MSVCPRT.lib ou MSVCPRTD.lib) ao vincular seu aplicativo.) Dependendo dos cabeçalhos que usar em seu código, uma biblioteca da biblioteca C++ padrão também pode ser vinculada.

O arquivo de cabeçalho <use_ansi.h> contém instruções # pragma que forçar a biblioteca C++ padrão para ser vinculado em. Todos os cabeçalhos de C++ padrão incluem <use_ansi.h>: se você incluir qualquer cabeçalho C++ padrão em seu aplicativo, a biblioteca C++ padrão será vinculada por padrão.

Cabeçalhos de C++ padrão

Recolher esta tabelaExpandir esta tabela
ALGORITMO BITSET COMPLEXO DEQUE
EXCEÇÃO FSTREAM FUNCIONAL IOMANIP
IOS IOSFWD IOSTREAM ISTREAM
ITERADOR LIMITES LISTA LOCALIDADE
MAPA MEMÓRIA NUMÉRICO OSTREAM
FILA CONJUNTO SSTREAM PILHA
STDEXCEPT STREAMBUF SEQÜÊNCIA DE CARACTERES STRSTREAM
TYPEINFO UTILITÁRIO VALARRAY VETOR


T3: como mantêm a antiga iostream funcionalidade de Visual C++ .NET 2003 ou de versões anteriores do Visual C++ se eu porta meu projeto de uma versão anterior?

A3:Se você desejar manter a Biblioteca iostream antigo (<iostream.h>), inclua um ou mais dos arquivos de cabeçalho de iostream antigos em seu código. Não use novos cabeçalhos C++ padrão. Você não pode misturar chamadas para a Biblioteca iostream antiga e nova biblioteca C++ padrão.



Q4: Como faço para que as bibliotecas C++ padrão as bibliotecas padrão para meu aplicativo?

A4: Se você deseja fazer com que as bibliotecas C++ padrão seja o padrão, inclua um ou mais dos novos cabeçalhos C++ padrão. Lembre-se de que você não pode misturar chamadas para iostream antiga e nova biblioteca C++ padrão. Bibliotecas existentes (link estático ou dinâmico) que use antigo iostream funções terá que ser modificado para usar funções iostream da biblioteca C++ padrão.



Q5: Quero usar bibliotecas C++ padrão em um aplicativo MFC (Microsoft Foundation Classes). Isso causará quaisquer conflitos com as bibliotecas de tempo de execução C?

A5: Não. MFC não usa as funções de tempo de execução C entrarão em conflito com as bibliotecas C++ padrão.



Q6: por que recebo mensagem de erro "erro C2065: 'cout': identificador não declarado" mesmo que incluí <iostream>?

A6: Biblioteca C++ padrão é implementada em seu próprio namespace "std". Certifique-se adicione a instrução
using namespace std;
				
no início do programa ou para qualificar cada C++ padrão identificador de biblioteca com espaço para nome std, por exemplo, std::cout.



Q7: por que estou recebendo "Erro de compilador C2371: 'identificador' redefinição; diferentes tipos básicos"?

A7:Nas versões do Visual C++ anteriores ao Visual C++ 2005, a mistura de cabeçalhos de C++ padrão e cabeçalhos iostream antigo causa esse erro, mesmo se eles forem incluídos em arquivos de origem diferentes. A seguir estão os cabeçalhos diferentes:

Antigo iostream cabeçalhos

Recolher esta tabelaExpandir esta tabela
FSTREAM.H IOMANIP.H
IOS.H IOSTREAM.H
ISTREAM.H OSTREAM.H
STDIOSTR.H STREAMB.H
STRSTREA.H

Cabeçalhos de C++ padrão

Recolher esta tabelaExpandir esta tabela
ALGORITMO BITSET COMPLEXO DEQUE
EXCEÇÃO FSTREAM FUNCIONAL IOMANIP
IOS IOSFWD IOSTREAM ISTREAM
ITERADOR LIMITES LISTA LOCALIDADE
MAPA MEMÓRIA NUMÉRICO OSTREAM
FILA CONJUNTO SSTREAM PILHA
STDEXCEPT STREAMBUF SEQÜÊNCIA DE CARACTERES STRSTREAM
TYPEINFO UTILITÁRIO VALARRAY VETOR


Q8: tenho um projeto que foi criado com a opção "Ignore Default Libraries" ( / NOD ou / NODEFAULTLIB ). Com o Visual C++ 5.0 ou posterior, Estou recebendo o erro de vinculador "LNK2001: símbolo não resolvido externo 'símbolo';" em todas as chamadas de função iostream. O que mudou?

A8: As funções iostream foram removidas do C-tempo de execução biblioteca.

Se você estiver usando as funções iostream antigo, você deve adicionar uma biblioteca adicional da seguinte maneira: LIBCI.lib (single-threaded <ml>), LIBCIMT.lib (<mt> multithread) ou MSVCIRT.lib (dll multithread <md>). Essas bibliotecas foram removidas do Visual C++ 2005 e de versões mais recentes do Visual C++.

Se você estiver usando as novas funções iostream incluídas com a biblioteca C++ padrão, você deve adicionar uma biblioteca adicional da seguinte maneira: LIBCP.lib (single-threaded <ml>), LIBCPMT.lib (<mt> multithread) ou MSVCPRT.lib (multithread dll <md>).

Não misture diferentes versões das bibliotecas. Por exemplo, se você estiver usando a versão de single-threaded da biblioteca C Runtime, você também deve usar a versão de single-threaded da Biblioteca iostream antigo ou biblioteca C++ padrão.

Você não pode misturar chamadas para as funções de Biblioteca iostream antigas e novas funções de iostream de biblioteca C++ padrão.



Q9: Estou recebendo avisos do compilador C4786 e/ou C4788. Nenhum dos símbolos no meu programa em qualquer lugar é perto de 255 caracteres. O que está causando isso?

A9: C4786/C4788 é emitido quando o nome do símbolo excede 255 caracteres. Isso acontece freqüentemente com classe de modelo e STL usa classe de modelo amplamente.

Ignorar esse aviso geralmente é seguro. Usar um aviso # pragma (desativar: 4786,4788) para suprimir as mensagens.



Q10: Estou recebendo um aviso do compilador "C4530: manipulador de exceção de C++ usado, mas desenrolar semântica não estão ativados. Especifique - GX." O que faz isso média?

A10: Programas que usam a biblioteca C++ padrão devem ser compilados com tratamento de exceção de C++ habilitado. Manipulação de exceção de C++ pode ser ativada por:
  • Selecionando a opção Ativar o tratamento de exceção na categoria de linguagem C++ da guia C/C ++ na caixa de diálogo Configurações do projeto . - ou -

  • Usando a opção de compilador /GX .


Q11: Estou recebendo o erro de compilador C2146, seguido por C2065 e finalmente C2143, todos os apontando para a mesma linha na minha fonte de. O que faz isso média?

A11: Essa seqüência de erros pode ser causada pelo seguinte tipo de construção:
vector<int, allocator<int>>iV;
				
o problema é causado pela consecutivos ">>" no final da declaração. A solução é colocar um espaço entre dois caracteres, para a construção se torna:
vector<int, allocator<int> > iV;
				
isso é consistente com a proposta ANSII especificação.


A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ 2008 Express Edition
  • The Standard C++ Library nas seguintes plataformas
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
    • Microsoft Visual C++ .NET 2002 Standard Edition
    • Microsoft Visual C++ .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbfaq kbinfo KB154419 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 154419  (http://support.microsoft.com/kb/154419/en-us/ )
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft