FIX: L'ottimizzatore di compilazione Visual c ++ potrebbe rimuovere cicli

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

306083
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sintomi
In alcuni rare condizioni, il compilatore c ++ possono ottimizzare cicli di un programma. Quando si esamina l'assembler compilato, si potrebbe si noti che vi sono funzioni che non contengono istruzioni di ciclica, anche se il codice sorgente contiene costrutti di ciclo.
Cause
Questo problema si verifica a causa di un bug in query optimizer globale.
Risoluzione

Informazioni sul Service pack

Per risolvere il problema, ottenere il service pack più recente per Microsoft Visual Studio. NET. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
837234Elenco dei bug corretti in Visual Studio .NET 2002 Service Pack 1

Informazioni sull'hotfix

La versione in lingua inglese di questa correzione presenta gli attributi di file elencati nella tabella seguente (o successivi). Date e ore per questi file sono indicati nella coordinated universal time (UTC). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello strumento Data e ora del Pannello di controllo.
   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 				


Workaround
Per aggirare il problema, utilizzare un tipo di dati più grande come valore dell'iteratore.
Status
Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a". Questo problema è stato innanzitutto corretto in Visual Studio .NET 2002 Service Pack 1.
Informazioni
Il programma riportato di seguito è un esempio del problema. Dopo aver creato questo programma di esempio base alle impostazioni del compilatore predefinito per la modalità di rilascio, stampa ciclo solo una volta.
#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;}				

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 306083 - Ultima revisione: 02/01/2014 00:23:56 - Revisione: 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 KbMtit
Feedback