Symptomer

Du bruker alternativet for /Ot (gjestene raskt Code) kompilator når du bygger et program som er konfigurert på x64 plattformen i Microsoft Visual Studio 2005 Service Pack 1 (SP1). Når du kjører programmet, kanskje noen Hvis -setninger på feil måte. Derfor er resultatene uforutsigbare. Hvis du for eksempel vil Hvis -setninger kan bli hoppet over i den genererte koden av programmet.

Dette problemet oppstår bare i følgende scenario.

  • Det finnes noen MOV instruksjoner mellom to Sammenlign-operasjoner.

  • Disse sammenligne operasjoner Bruk samme operandene.

  • Verdiene for operandene er endret av MOV-instruksjoner.

I dette tilfellet Hvis -setninger i den andre Sammenlign-operasjonen kan bli hoppet over.

Notater

  • Dette problemet kan også oppstå når du bruker alternativet /O2 eller det /Ox for å utvikle programmet.

  • Dette problemet oppstår ikke på x86 plattform.

Årsak

Dette problemet oppstår fordi at kompilatoren optimalisering feilaktig antar at flagget som er angitt av XOR-operasjonen kan brukes uten å inkludere en Sammenlign-operasjon.

Løsning

Informasjon om hurtigreparasjon

En støttet hurtigreparasjon er tilgjengelig fra Microsoft. Denne hurtigreparasjonen er imidlertid ment å løse problemet som er beskrevet i denne artikkelen. Bruk denne hurtigreparasjonen bare på systemer som har problemet som er beskrevet i denne artikkelen. Denne hurtigreparasjonen kan gjennomgå ytterligere testing. Hvis du ikke er alvorlig påvirket av dette problemet, anbefaler vi derfor at du venter på neste programvareoppdatering som inneholder denne hurtigreparasjonen.

Hvis hurtigreparasjonen er tilgjengelig for nedlasting, ligger den under delen "Hotfix Download Available" øverst i denne Knowledge Base-artikkelen. Hvis denne delen ikke vises, kan du kontakte Microsofts kundeservice og kundestøtte for å få hurtigreparasjonen.

Obs! Hvis det oppstår andre problemer, eller hvis feilsøkingstips, må du kanskje opprette en separat forespørsel om. Vanlige kundestøttekostnader gjelder for ytterligere kundestøttespørsmål og problemer som ikke dekkes av denne oppdateringen. For en fullstendig liste over telefonnumre for Microsofts kundeservice og kundestøtte eller opprette en separat forespørsel om, kan du gå til følgende Microsoft-webområde:

http://support.microsoft.com/contactus/?ws=supportObs! Hotfix Download Available-skjemaet viser språkene som hurtigreparasjonen er tilgjengelig på. Hvis du ikke ser språket ditt, er det fordi en hurtigreparasjon ikke er tilgjengelig for dette språket.

Forutsetninger

Du må ha for Visual Studio 2005 SP-1 installert for å bruke denne hurtigreparasjonen.

Krav om omstart

Du trenger ikke å starte datamaskinen på nytt etter at du har installert denne hurtigreparasjonen.

Informasjon om erstatning av hurtigreparasjoner

Denne hurtigreparasjonen erstatter ikke andre hurtigreparasjoner.

Filinformasjon

Den engelskspråklige versjonen av denne hurtigreparasjonen har filattributtene (eller senere filattributter) som er oppført i følgende tabell. Datoene og klokkeslettene for disse filene er oppført i Coordinated Universal Time (UTC). Når du viser filinformasjonen, konverteres den til lokal tid. Hvis du vil finne forskjellen mellom UTC og lokal tid, kan du bruke kategorien tidssone under dato og klokkeslett i Kontrollpanel.

Filnavn

Filversjon

Filstørrelse

Dato

Tid

Plattform

C2.dll

14.0.50727.3080

2,273,280

19 november 2008

18:52

x86

C2.dll

14.0.50727.3080

7,192,576

19 november 2008

23:25

IA-64

C2.dll

14.0.50727.3080

2,490,368

19 november 2008

23:26

x86

C2.dll

14.0.50727.3080

3,600,384

19 november 2008

23:33

x64

C2.dll

14.0.50727.3080

2,203,648

19 november 2008

23:33

x86

Løsning

Hvis du vil omgå dette problemet, bruker du én av følgende metoder:

  • Bruke nøkkelordet midlertidig når du deklarerer variabler som brukes i Hvis -setninger.

  • Deaktiver alternativet for optimalisering hastighet. For eksempel erstatte /Ot alternativet med alternativet /Os (liten favør-kode) . Eller bruke alternativet /O1 i stedet for den /O2 eller /Ox .

  • Legge til en linje med kode før Hvis -setninger i andre sammenligner operasjonen. Hvis du for eksempel legge til en printf -setning.

Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Hvis du vil ha mer informasjon

For mer informasjon om koden for én eller flere setninger kan kjøre på feil måte når du bruker funksjonen for optimalisering for kode i Visual Studio 2005, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:

925792 én eller flere setninger i koden kjører kanskje ikke riktig når du bruker funksjonen for optimalisering for kode i Visual Studio 2005

Hvis du vil ha mer informasjon om terminologi for programvareoppdatering, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:

824684 beskrivelse av standardterminologien som brukes til å beskrive oppdateringer av Microsoft-programvare

Trenger du mer hjelp?

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Microsoft Insiders

Var denne informasjonen nyttig?

Hvor fornøyd er du med språkkvaliteten?
Hva påvirket opplevelsen din?

Takk for tilbakemeldingen!

×