CORRECÇÃO: /og faz com que inválido duplo resultado devolvido da função

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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 167996
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sintomas
Quando estiver a criar com /og e chamar uma função que devolve um dobre, aparentemente devolve resultados inválidos. O exemplo abaixo demonstra um formulário deste erro.
Causa
O compilador de geração de código aparece pilha FPU sem guardar o resultado.
Resolução
Desactive /og volta a função que está a chamar a função devolver dupla utilizando # pragma optimize("g",off).
Ponto Da Situação
A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo. Este erro foi corrigido no Visual Studio 97 Service Pack 1.

Para obter informações adicionais sobre o Visual Studio 97 Service Pack 1, consulte o seguinte artigo na base de dados de conhecimento da Microsoft:
170365INFO: Visual Studio 97 Service Packs - O, onde e por que razão
Mais Informação
Se a examinar o seguinte código num depurador, demonstra como o regresso do f1 não é armazenado no d.

Código de exemplo

   // Compile options needed: /Og   double f1()   {      return 1.0;   }   void f2()   {      double d = 0.0;      d=f1();   }				
/ O2

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 167996 - Última Revisão: 01/06/2015 02:04:31 - Revisão: 1.1

Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition

  • kbnosurvey kbarchive kbmt kbbug kbcode kbcompiler kbfix kbvs97sp1fix kbvs97sp2fix KB167996 KbMtpt
Comentários