Причини
Використовується параметр компілятор /Ot (користь швидкого код) , під час створення застосунку, який налаштовано на на x64 платформу Microsoft Visual Studio 2005 пакета оновлень 1 (SP1). Під час запуску застосунку, деякі Якщо заяви може працювати неправильно. Таким чином, результати можуть бути непередбачуваними. Наприклад, Якщо заяви може пропущено згенерований код застосунку.
Ця проблема виникає в таких випадках.
-
Існують деякі MOV інструкції, між двома операціями для порівняння.
-
Ці порівняти, операції з використанням одного операндів.
-
Значення операнди змінено MOV інструкцій.
У цьому випадку Якщо заяви, у другому порівняння операції може пропущено.
Примітки
-
Ця проблема може виникати під час використання в /O2 /Ox параметр або створити застосунок.
-
Ця проблема виникає на x86 платформу.
Причина
Ця проблема виникає в тому, що компілятор optimizer неправильно припускається, що позначку, встановлений за XOR операції може використовуватися не враховуючи порівняння-операції.
Вирішення
Відомості про виправлень
Виправлення доступне від корпорації Майкрософт. Проте, це виправлення призначене тільки для вирішення проблеми, описаної в цій статті. Застосовуйте це виправлення лише до систем, які відчувають проблеми, описані в цій статті. Це виправлення може отримати додаткове тестування. Тому, якщо ця проблема не сильно впливає на вас, ми рекомендуємо почекати наступного оновлення програмного забезпечення, що містить це виправлення.
Якщо Виправлення доступне для завантаження, є розділ "Виправлення доступне для завантаження" на початку цієї статті бази знань. Якщо цей розділ не відображається, зверніться до служби підтримки клієнтів Microsoft, щоб отримати виправлення.
Примітка. Якщо виникають додаткові проблеми, або потрібно виявлення проблем, можливо, доведеться створити окремий запит на обслуговування. Звичайні кошти на технічну підтримку будуть застосовуватися для додаткових питань і проблем, які не пов'язані з цим виправленням. Повний список телефонів служби підтримки користувачів і технічної підтримки, або створити окремий запит на обслуговування відвідайте веб-сайт корпорації Майкрософт:
http://support.microsoft.com/contactus/?ws=supportПримітка. У формі "Виправлення доступне для завантаження" відображається список мов, для яких це виправлення доступне. Якщо потрібна мова не відображається, то виправлення недоступне для даної мови.
Попередні вимоги
Потрібно мати Visual Studio 2005 пакета Оновлень 1 для застосування цього виправлення.
Необхідність перезавантаження
Вам не потрібно перезавантажувати комп'ютер, після застосування цього виправлення.
Відомості про заміну виправлень
Це виправлення не замінює жодних інших виправлень.
Відомості про файли
Англійська версія цього виправлення на комп'ютері має атрибути файлів (або новіші атрибути файлів), подані в нижченаведеній таблиці. Значення дати й часу для цих файлів наведено за всесвітнім координованим часом (UTC). Переглядаючи відомості про файл, час конвертується у місцевий час. Щоб визначити різницю між UTC і місцевим часом, використайте вкладку Часовий пояс у Дата й час на панелі керування.
Ім'я файлу |
Версія файлу |
Розмір файлу |
Дата |
Час |
Платформа |
---|---|---|---|---|---|
C2.dll |
14.0.50727.3080 |
2,273,280 |
19 листопада 2008 року. |
18:52 |
x86 |
C2.dll |
14.0.50727.3080 |
7,192,576 |
19 листопада 2008 року. |
23:25 |
IA-64 |
C2.dll |
14.0.50727.3080 |
2,490,368 |
19 листопада 2008 року. |
23:26 |
x86 |
C2.dll |
14.0.50727.3080 |
3,600,384 |
19 листопада 2008 року. |
23:33 |
x64 |
C2.dll |
14.0.50727.3080 |
2,203,648 |
19 листопада 2008 року. |
23:33 |
x86 |
Виправлення помилок
Щоб тимчасово усунути цю проблему, скористайтеся одним із наведених нижче способів.
-
Ви оголосити змінні, які використовуються в заяви Якщо використовувати змінні ключове слово.
-
Вимкніть параметр оптимізації швидкості. Наприклад, замініть параметр /Ot параметр /Os (користь малі код) . Або, якщо параметр /O1 , а не з /O2 /Ox параметр або.
-
Додайте рядок коду, перш ніж, Якщо заяви, по-друге, порівняйте операції. Наприклад, потрібно додати оператор printf .
Стан
Корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".
Додаткові відомості
Додаткові відомості про одну або кілька з кодом, оператори може працювати неналежним чином, під час використання функції "оптимізація" код у Visual Studio 2005 клацніть номер статті в базі знань Microsoft Knowledge Base:
925792 заяви, один або кілька код може працювати неправильно під час використання функції "оптимізація" код у Visual Studio 2005
Щоб отримати додаткові відомості про термінологію оновлення програмного забезпечення, клацніть цей номер статті в базі знань Microsoft:
824684 Опис стандартну термінологію, яка використовується для опису оновлень програмного забезпечення Microsoft