Du er frakoblet, venter på at Internett skal koble til igjen

Nettleseren støttes ikke

Du må oppdatere nettleseren for å bruke nettstedet.

Oppdater til den nyeste versjonen av Internet Explorer

Korriger: Feil maskin-kode genereres for en "switch"-setning i Visual C++-2010 x 64 kompilator

Viktig: Denne artikkelen har blitt maskinoversatt, og dermed ikke oversatt av en person. For at alle artikler i vår database skal være oversatt til ditt språk, vil Microsoft benytte både personoversatte og maskinoversatte artikler. Det er viktig å merke seg at en maskinoversatt artikkel ikke alltid er perfekt. Det kan forekomme stave, strukturelle eller grammatiske feil. Microsoft er ikke ansvarlig for unøyaktigheter, feil eller skade ved bruk av innhold i artikkel som måtte forårsakes av feiloversettelse. Microsoft vil jevnlig oppdatere sitt maskinoversettelses programvare.

Den engelske versjonen av denne artikkelen er den følgende: 2802711
Symptom
Anta at du kompilere en C eller C++ kilde koden fil til en x 64-baserte binærfil ved hjelp av Visual C/C++ kompilatoren (Cl.exe) i Microsoft Visual Studio 2010. Kildekodefilen inneholder en funksjon som bruker en bytte setning. I så fall genereres feil maskin-kode for bytte -setningen hvis følgende betingelser er oppfylt:
  • Alternativet /Ob1 (Only_inline)-kompilator er aktivert.
  • Den /O1 (redusere størrelse), /O2 (Maksimer hastighet), /Ox (Full optimalisering) eller /Og (Global optimaliseringer) optimaliseringsalternativ kompilatoren er aktivert.
  • Alternativet for /GL (hele programmet optimalisering)-kompilatoren er deaktivert.
Løsning

Informasjon om hurtigreparasjon

En støttet hurtigreparasjon er nå tilgjengelig fra Microsoft. Det er imidlertid ment å løse problemet som beskrives i denne artikkelen. Bruk den bare på systemer som har dette bestemte problemet.

Hvis du vil løse dette problemet, kontakter du Microsoft kundestøtte for å få hurtigreparasjonen. For en fullstendig liste over telefonnumre for Microsofts kundestøttetjenester og informasjon om støttekostnader, kan du gå til følgende Microsoft-webområde:Obs! I noen tilfeller kan avgifter som vanligvis påløper for oppringinger til kundestøtte avbrutt hvis en Microsoft-tekniker avgjør at en bestemt oppdatering løser problemet. Vanlige kundestøttekostnader gjelder for ytterligere kundestøttespørsmål og problemer som ikke dekkes av den gjeldende oppdateringen.

Forutsetninger

Hvis du vil bruke denne hurtigreparasjonen, må du ha Visual Studio 2010 Service Pack 1 (SP1) installert.

Krav om omstart

Du har ikke datamaskinen på nytt etter at du har installert denne hurtigreparasjonen hvis de berørte filene ikke er i bruk. Vi anbefaler at du lukker Visual Studio 2010-relaterte komponenter før du bruker denne hurtigreparasjonen.

Filinformasjon

Den globale versjonen av denne hurtigreparasjonen har filattributtene (eller senere filattributter) som er oppført i tabellen nedenfor. 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, bruker den Tidssone kategorien i den Dato og klokkeslett elementet i Kontrollpanel.
FilnavnFilversjonFilstørrelseDatoTidPlattformBane
C2.dll16.0.40219.4442,606,71211-Mar-201319:24x 86Microsoft Visual Studio-10.0\VC\bin
C2.dll16.0.40219.4442,493,56012-Mar-201316:48x 86Microsoft Visual Studio-10.0\VC\bin\x86_amd64
C2.dll16.0.40219.4442,593,92812-Mar-201316:48x 86Microsoft Visual Studio-10.0\VC\bin\x86_ia64
C2.dll16.0.40219.4442,960,50412-Mar-201316:48x 64Microsoft Visual Studio-10.0\VC\bin\amd64

Mer informasjon
Hvis du vil gjenskape dette problemet, oppretter du en C eller C++ kilde-fil som inneholder følgende kode:
#include <stdio.h>int test(int bps, int sflags){    if (sflags & (1 << bps))    {        switch (bps)        {        case 1:  return 1;        case 2:  return 3;        default: return 0;        }    }    else    {        switch (bps)        {        case 1:  return 2;        default: return 0;        }    }} void main(){    int res = test(1, -1);    printf("%d\n", res);}


Deretter åpne ledetekst for Visual Studio x 64 på tvers av verktøy eller Visual Studio x 64 Win64 ledeteksten i Visual Studio 2010 og kompilere kildefilen ved hjelp av følgende kommando:
kl /Ob1 /O2 'Kilde-filbane'

Det forventede resultatet er 1. Men er faktisk resultatet 0.
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".
Referanser
Hvis du vil ha mer informasjon om alternativet /Ob kompilatoren, kan du gå til følgende MSDN-webområde: Hvis du vil ha mer informasjon om alternativet /GL kompilatoren, kan du gå til følgende MSDN-webområde: Hvis du vil ha mer informasjon om alternativer for optimalisering av /O , kan du gå til følgende MSDN-webområde:

Advarsel: Denne artikkelen er autooversatt

Egenskaper

Artikkel-ID: 2802711 – Forrige gjennomgang: 03/29/2013 08:52:00 – Revisjon: 3.0

  • Microsoft Visual Studio 2010 Service Pack 1
  • Microsoft Visual Studio 2010 Ultimate
  • Microsoft Visual Studio 2010 Professional
  • Microsoft Visual Studio 2010 Premium with MSDN
  • kbqfe kbhotfixserver kbfix kbsurveynew kbexpertiseadvanced kbmt KB2802711 KbMtno
Tilbakemelding