Wprowadzenie
Poprawki, którą opisano w tym artykule rozwiązuje następujące problemy w programie Microsoft Visual Studio 2010.
Problem 1
Po uruchomieniu aplikacji, która ma pętle w kodzie źródłowym wystąpi nieoczekiwane zachowanie. Ten problem występuje, jeśli kod źródłowy jest kompilowany z optymalizacją globalne (/ Og) włączony.
Problem 2
Rozważ następujący scenariusz:
-
Masz projektu Visual C++, który zawiera plik Atlcomcli.h.
-
Określ opcję kompilatora /J do definiowania_CHAR_UNSIGNEDmakro w projekcie.
-
Skompiluj projekt.
W tym scenariuszu wyświetlany jest jeden z następujących komunikatów o błędzie:
-
Błąd C2338: nie można skompilować CVarTypeInfo < char > z włączoną flagą /J lub _CHAR_UNSIGNED
-
Błąd C2338: nie można skompilować CVarTypeInfo < char * > z włączoną flagą /J lub _CHAR_UNSIGNED
Problem 3
Naruszenie zasad dostępu występuje po uruchomieniu aplikacji Visual C++, który jest zbudowany dla x86 wersji systemu Windows. Ten problem występuje, gdy aplikacja ma drzewa wyrażenie, która ma dwa argumenty wejściowe typu tablicy.
Przyczyna
Przyczyna problemu 1
Ten problem występuje, ponieważ Optymalizacja niepoprawne pętla jest wykonywana. Powoduje to, że nieprawidłowo wygenerowany kod.
Przyczyna problemu 2
Ten problem występuje, ponieważ statyczne potwierdzeń w pliku Atlcomcli.h są ustawione na opcję /J i makra CHAR_UNSIGNED niepoprawnie.
Przyczyną problemu 3
Ten problem występuje, ponieważ argumenty w instrukcjach replikacji wypychanej są mieszane. W związku z tym Niepoprawne argumenty są przekazywane do pchania instrukcje.
Więcej informacji
Informacje o poprawce
Obsługiwana poprawka jest obecnie udostępniana przez firmę Microsoft. Jednak jest ona przeznaczona do usunięcia tylko problemu opisanego w tym artykule. Zastosuj ją tylko w systemach, w których występuje ten problem. 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ępny program Visual Studio 2010, zawierający tę poprawkę.
Aby natychmiast rozwiązać ten problem, skontaktuj się z biurem obsługi klienta Microsoft w celu uzyskania poprawki. Aby uzyskać pełną listę numerów telefonów pomocy technicznej firmy Microsoft oraz informacje o kosztach, odwiedź następującą witrynę sieci Web firmy Microsoft:http://support.microsoft.com/contactus/?ws=supportUwaga W wyjątkowych przypadkach opłaty za połączenie z pomocą techniczną mogą zostać anulowane, jeśli specjalista firmy Microsoft zdecyduje że określona aktualizacja, może rozwiązać Twój problem. Koszty obsługi zwykłych zastosuje się do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej aktualizacji.
Wymagania wstępne
Musi mieć Microsoft Visual Studio 2010 zainstalować tę poprawkę.
Wymagania dotyczące ponownego uruchomienia
Nie trzeba ponownie uruchomić komputer po zastosowaniu tej poprawki, jeśli jest używany plik nie dotyczy.
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ć Strefa czasowa w zakładce Data i godzina element w Panelu sterowania.
Nazwa pliku |
Wersja pliku |
Rozmiar pliku |
Data |
Godzina |
Platforma |
---|---|---|---|---|---|
C2.dll |
16.0.30319.314 |
2,510,144 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,588,480 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,630,976 |
30-May-2010 |
20:48 |
x86 |
C2.dll |
16.0.30319.314 |
2,977,600 |
30-May-2010 |
20:48 |
x64 |
C2.dll |
16.0.30319.314 |
7,351,616 |
30-May-2010 |
20:48 |
IA-64 |
Obejście problemu
Obejście problemu 1
Aby obejść ten problem, należy wyłączyć optymalizacji globalnej. Aby uzyskać więcej informacji na temat sposobu wyłączania optymalizacji globalnej, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
NAPRAW 216181 : niepoprawny kod wygenerowany przy optymalizacji/og
Obejście problemu 2
Aby obejść ten problem, należy użyć następującej dyrektywy pragmy można dołączyć plik Atlcomcli.h.
#pragma push_macro("ATLSTATIC_ASSERT")
#undef ATLSTATIC_ASSERT #define ATLSTATIC_ASSERT(x,y) #include <atlcomcli.h> #undef ATLSTATIC_ASSERT #pragma pop_macro("ATLSTATIC_ASSERT")