CORRECÇÃO: Optimizador do compilador de Visual C++ poderá remover ciclos

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: 306083
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sintomas
Em determinados, raras circunstâncias, o compilador C++ podem optimizar ciclos fora de um programa. Quando examina o integrador compilado, poderá Repare que existem funções que não contêm instruções de loop, apesar do código de origem contém construções de loop.
Causa
Este problema ocorre devido a um erro no optimizador global.
Resolução

Informações sobre Service Packs

Para resolver este problema, obtenha o service pack mais recente do Microsoft Visual Studio. NET. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
837234Lista de erros corrigidos no Visual Studio .NET 2002 1

Informações sobre a correcção

A versão inglesa desta correcção tem os atributos de ficheiro (ou posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas no formato de universal hora (UTC) coordenada Coordinated. Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário na ferramenta Data e hora no painel de controlo.
   Date          Version       Size        File name   -------------------------------------------------   11-Apr-2002   13.0.9485.0   1,753,088   C2.dll    11-Apr-2002   13.0.9485.0   2,105,344   C1xx.dll 				


Como contornar
Para contornar o problema, utilize um tipo de dados maior como o valor de iteração.
Ponto Da Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a". Este problema foi corrigido pela primeira vez no Visual Studio .NET 2002 1.
Mais Informação
O programa seguinte é um exemplo do comportamento. Depois de criar este programa de exemplo utilizando as predefinições de compilador para modo de edição, imprime ciclo apenas uma vez.
#include <windows.h>#include <stdio.h>#include <tchar.h>int __cdecl _tmain (int argc, _TCHAR* argv[]){    unsigned char stream, tmp;    for (stream = 0; stream < 4; stream++)    {        tmp = stream;        fprintf (stderr, "Loop\r\n", (unsigned char)((tmp+4)<<5));    }    return 0;}				

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 306083 - Última Revisão: 02/12/2014 06:01:09 - Revisão: 2.1

Microsoft Visual Studio .NET 2002 Professional Edition, Microsoft Visual Studio .NET 2002 Enterprise Architect, Microsoft Visual Studio .NET 2002 Enterprise Developer, Microsoft Visual Studio .NET 2002 Academic Edition, Microsoft Visual C++ .NET 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbvs2002sp1sweep kbvs2002sp1fix kbbug kbfix kbqfe KB306083 KbMtpt
Comentários