Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

Objawy

Użyj opcji kompilatora/OT (korzyść szybko kod) podczas tworzenia aplikacji, która jest skonfigurowana na x64 platformy w Microsoft Visual Studio 2005 z dodatkiem Service Pack 1 (SP1). Po uruchomieniu aplikacji, niektóre instrukcji Jeżeli mogą działać niepoprawnie. W związku z tym wyniki są nieprzewidywalne. Na przykład Jeśli instrukcje mogą zostać pominięte w wygenerowanym kodzie aplikacji.

Ten problem występuje tylko w następującym scenariuszu.

  • Istnieją pewne wskazówki MOV między dwie operacje porównywania.

  • Porównać te operacje użycia tym samym operandy.

  • Wartości argumentów są zmieniane przez instrukcje MOV.

W tym scenariuszu mogą zostać pominięte instrukcji Jeżeli w drugiej operacji porównywania.

Uwagi

  • Ten problem może również wystąpić, gdy używasz opcji/O2 lub opcji/OX do tworzenia aplikacji.

  • Ten problem nie występuje na x86 platformy.

Przyczyna

Ten problem występuje, ponieważ Optymalizator kompilator błędnie zakłada, że flagi, która jest ustawiana przez operacji XOR może być używany bez dołączania operacja porównania.

Rozwiązanie

Informacje o poprawce

Obsługiwana poprawka jest udostępniana przez firmę Microsoft. Jednak ta poprawka jest przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Zastosuj poprawkę tylko w systemach, w których występuje problem opisany w tym artykule. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następną aktualizację oprogramowania zawierającą tę poprawkę.

Jeśli poprawka jest dostępna do pobrania, pojawi się sekcja "Poprawka dostępna do pobrania" na początku tego artykułu z bazy wiedzy Knowledge Base. Jeśli nie ma tej sekcji, skontaktuj się z Obsługą i Wsparciem Klienta Microsoft w celu uzyskania poprawki.

Uwaga Jeśli wystąpią dodatkowe błędy lub konieczność rozwiązania problemu, być może trzeba będzie utworzyć osobne zlecenie usługi. Zwykłe koszty obsługi będą zastosowane do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej poprawki. Aby uzyskać pełną listę numerów telefonów pomocy technicznej i obsługi klienta firmy Microsoft lub utworzyć osobne zlecenie usługi, odwiedź następującą witrynę firmy Microsoft w sieci Web:

http://support.microsoft.com/contactus/?ws=supportUwaga "Poprawka dostępna do pobrania" zawiera listę języków, dla których dostępna jest poprawka. Jeśli odpowiedni język nie jest widoczny, to dlatego, że poprawka nie jest dostępna dla danego języka.

Wymagania wstępne

Musi mieć Visual Studio 2005 z dodatkiem SP 1 zainstalować tę poprawkę.

Wymagania dotyczące ponownego uruchomienia

Nie musisz ponownie uruchomiać komputera po zastosowaniu tej poprawki.

Informacje dotyczące zastępowania poprawek

Ta poprawka nie zastępuje żadnych innych poprawek.

Informacje o plikach

Wersja anglojęzyczna tej poprawki ma atrybuty plików (lub nowsze) wymienione w poniższej tabeli. Daty i godziny odpowiadające tym plikom zostały podane w formacie uniwersalnego czasu koordynowanego (UTC, Coordinated Universal Time). Po wyświetleniu informacji o pliku są konwertowane na czas lokalny. Aby zobaczyć różnicę między czasem UTC i czasem lokalnym, należy użyć z karty Strefa czasowa w aplecie Data i godzina w Panelu sterowania.

Nazwa pliku

Wersja pliku

Rozmiar pliku

Data

Godzina

Platforma

C2.dll

14.0.50727.3080

2,273,280

19-lis-2008

18:52

x86

C2.dll

14.0.50727.3080

7,192,576

19-lis-2008

23:25

IA-64

C2.dll

14.0.50727.3080

2,490,368

19-lis-2008

23:26

x86

C2.dll

14.0.50727.3080

3,600,384

19-lis-2008

23:33

x64

C2.dll

14.0.50727.3080

2,203,648

19-lis-2008

23:33

x86

Obejście problemu

Aby obejść ten problem, użyj jednej z następujących metod:

  • Słowo kluczowe volatile należy użyć przy deklarowaniu zmiennych, które są używane w instrukcji Jeżeli .

  • Wyłącz opcję optymalizacji szybkości. Na przykład można zastąpić opcję/OT z opcją/OS (kod małych korzyść) . Lub użyć opcji/O1 zamiast opcji/O2 lub opcji/OX .

  • Dodaj wiersz kodu przed operacji porównaj instrukcji Jeżeli w drugim. Na przykład dodać instrukcję printf .

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Więcej informacji

Aby uzyskać więcej informacji o jeden lub więcej kodów, które instrukcji może działać niepoprawnie podczas korzystania z funkcji optymalizacji kodu w programie Visual Studio 2005 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

925792 jedną lub więcej instrukcji kodu mogą działać niepoprawnie podczas korzystania z funkcji optymalizacji kodu w programie Visual Studio 2005

Aby uzyskać więcej informacji dotyczących terminologii aktualizacji oprogramowania, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×