Sümptomid
Kasutate /Ot (kasuks kiiresti kood) kompilaator variant kui koostate rakendus, mis on konfigureeritud x64 platvormi Microsoft Visual Studio 2005 Service Pack 1 (SP1). Kui käivitate rakenduse, käivitada teatud kui avalduste valesti. Seetõttu on tulemused ettearvamatud. Näiteks kui väidetest võib vahele rakenduse genereeritud koodi.
See probleem ilmneb ainult järgmistel juhtudel.-
On mõned MOV juhiseid kaks võrdlus toimingute vahel.
-
Nende võrdlemine toiminguid kasutada sama operandi.
-
Selle operandi väärtust muudetakse MOV juhistega.
Selle stsenaariumi korral võib kui avalduste võrdlus teine toiming vahele.
Märkused-
See probleem võib ilmneda ka siis, kui kasutate rakenduse kaudu/O2 või /Ox .
-
See probleem ei esine x86 platvormi.
Põhjus
See probleem ilmneb seetõttu kompilaator optimeerija valesti eeldab, et lipp, mis on määratud XOR toimingu kasutamist kaasamata seejuures võrdlus tööd.
Lahendus
Kiirparanduse teave
Toetatud käiguparandus on saadaval Microsoftilt. See kiirparandus on ette nähtud üksnes käesolevas artiklis kirjeldatud probleemi lahendamiseks. Kasutage seda kiirparandust ainult selles artiklis kirjeldatud probleemiga süsteemide. Seda kiirparandust võidakse täiendavalt testida. Seega, kui probleem teid tõsiselt ei kahjusta, soovitame oodata järgmist tarkvaravärskendust, mis sisaldab seda kiirparandust.
Kui kiirparandus on allalaadimiseks saadaval, on selle teabebaasi artikli alguses "Kiirparandus on allalaadimiseks saadaval" sektsiooni. Kui seda jaotist ei ole, kontakteeruge vastava kiirparanduse hankimiseks Microsofti klienditeeninduse ja toega. Märkus. Kui ilmneb veel probleeme või kui on tarvis teha tõrkeotsing, peate looma eraldi tugiteenuse taotluse. Tavapärane tugiteenuse tasu kehtib täiendavatele tugiteenustega seotud küsimustele ning probleemidele, mis pole lahendatavad konkreetse kiirparandusega. Täieliku loetelu Microsofti klienditeeninduse ja -toe telefoninumbrite või eraldi tugiteenuse taotluse loomiseks külastage järgmist Microsofti veebisaiti:http://support.microsoft.com/contactus/?ws=supportMärkus. "Kiirparandus on allalaadimiseks saadaval" vormil kuvatakse keeled, mille jaoks kiirparandus on saadaval. Kui te ei näe oma keelt, ei ole kiirparandus selles keeles saadaval.
Eeltingimused
Visual Studio 2005 SP1 installitud selle kiirparanduse rakendamiseks peab teil olema.
Taaskäivitamise nõue
Te ei pea pärast selle kiirparanduse rakendamist arvutit taaskäivitama.
Kiirparanduse asendamise teave
See kiirparandus ei asenda ühtegi muud käigultparandust.
Failiteave
Sellel kiirparanduse ingliskeelsel versioonil on failiatribuudid (või hilisemad failiatribuudid), mis on loetletud järgmises tabelis. Kuupäevad ja kellaajad need failid jaoks on loetletud maailmaaja järgi (UTC). Faili teabe vaatamisel teisendatakse see kohalikule ajale. UTC ja kohaliku aja erinevuste väljaselgitamiseks kasutage juhtpaneeli üksuses kuupäev ja kellaaeg vahekaarti ajavöönd .
Faili nimi |
Faili versioon |
Faili maht |
Kuupäev |
Aeg |
Platvorm |
---|---|---|---|---|---|
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 |
Lahendus
Selle probleemi lahendamiseks kasutage ühte järgmistest meetoditest.
-
Kasutage lenduvate märksõna, kui muutujaid, mis on kasutusel kui avalduste tuvastada.
-
Keelake suvand kiiruse optimeerimine. Näiteks Asendage /Ot suvandi /Os (kasuks väike kood) võimalust. Või kasutage suvandit /O1 kaudu/O2 või /Ox asemel.
-
Lisada koodi rida, enne kui avalduste teises võrrelge tööd. Näiteks lisage printf lause.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "Kehtib järgmiste toodete kohta" loetletud Microsofti toodetel.
Lisateabe saamiseks
Lisateabe saamiseks ühe või mitme koodi avalduste käivitada valesti koodi optimeerimine funktsiooni kasutamisel Visual Studio 2005 kohta klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
925792 ühe või mitme koodi avalduste käivitada valesti koodi optimeerimine funktsiooni kasutamisel Visual Studio 2005 Tarkvaravärskenduste terminoloogia kohta lisateabe saamiseks avage Microsofti teabebaasi (Knowledge Base) artikkel, klõpsates järgmist artiklinumbrit:
824684 Microsofti tarkvaravärskenduste iseloomustamiseks kasutatavate standardterminite kirjeldus