Príznaky
Predstavte si nasledujúcu situáciu.
-
Môžete vytvoriť aplikáciu, ktorá načíta byte štruktúru alebo triedu v Microsoft Visual Studio 2008 Service Pack 1 (SP1).
-
Zapnete možnosť optimalizácie /Ox alebo / O2 optimalizácia.
-
Aplikácia zostaviť pomocou uvoľnenie konfigurácie x64 platformu.
V takomto prípade je nesprávny posun vygenerovaný štruktúra členom alebo členom.
Tento problém sa vyskytuje, len keď veľkosť štruktúry a posun alebo triede a posun rovná jednu z nasledujúcich kombinácií:
-
(14,13)
-
(15,13)
-
(22,21)
-
(23,21)
-
(30,29)
-
(31,29)
Riešenie
Informácie o rýchlej oprave
Rýchla oprava je k dispozícii od spoločnosti Microsoft. Je však určená iba na vyriešenie problému, ktorý je popísaný v tomto článku. Použite ju iba v počítačoch s týmto konkrétnym problémom. Táto rýchla oprava môže bude ďalej testovaná. Ak vám nespôsobuje tento problém, odporúčame vám počkať na ďalšiu Visual Studio 2008 service pack, ktorá obsahuje túto rýchlu opravu.
Ak chcete tento problém vyriešiť okamžite, obráťte sa na služby technickej podpory spoločnosti Microsoft a požiadajte o rýchlu opravu. Úplný zoznam telefónnych čísiel služby podpory zákazníkov spoločnosti Microsoft a informácie o poplatkoch za poskytnutie technickej podpory nájdete na webovej lokalite spoločnosti Microsoft:
http://support.microsoft.com/contactus/?ws=supportPoznámka: V niektorých zvláštnych prípadoch sa môžu zrušiť poplatky za telefonickú podporu, ak pracovník služieb technickej podpory spoločnosti Microsoft usúdi, že daný problém sa vyrieši nainštalovaním určitej aktualizácie. Ďalšie otázky a žiadosti o technickú podporu, ktoré sa netýkajú tejto špecifickej aktualizácie, podliehajú bežným sadzbám za poskytovanie technickej podpory.
Požiadavky
Visual Studio 2008 Service Pack 1 nainštalovaný chcete použiť túto rýchlu opravu, musíte mať.
Požiadavka na reštartovanie
Po použití tejto rýchlej opravy nie je potrebné reštartovať počítač.
Informácie o nahradení rýchlej opravy
Táto rýchla oprava nenahrádza žiadne iné rýchle opravy.
Informácie o súboroch
Anglická verzia tejto rýchlej opravy má atribúty súborov (alebo novšie atribúty) uvedené v nasledujúcej tabuľke. Dátumy a čas jednotlivých súborov sú uvedené vo formáte koordinovaného svetového času (UTC). Pri zobrazení informácií o súbore sa dátumy a čas prevedú na miestny čas. Ak chcete vyhľadať rozdiely medzi časom UTC a miestnym časom, použite kartu Časové pásmo v položke Dátum a čas v ovládacom paneli.
Názov súboru |
Verzia súboru |
Veľkosť súboru |
Dátum |
Čas |
Platforma |
---|---|---|---|---|---|
C2.dll |
15.0.30729. 4082 |
2,283,320 |
19-Mar-2009 |
05:13 |
x86 |
C2.dll |
15.0.30729.4082 |
2,36 1,656 |
19-Mar-2009 |
05:13 |
x86 |
C2.dll |
15.0.30729.4082 |
3,01 7,528 |
19-Mar-2009 |
05:13 |
x64 |
Link.exe |
9.0.30729.4082 |
1,0 54,520 |
19-Mar-2009 |
05:13 |
x64 |
Link.exe |
9.0.30729.4082 |
799, 032 |
19-Mar-2009 |
05:13 |
x86 |
Alternatívne riešenie
Obísť tento problém, pridajte fiktívny "unsigned char" členov rozšíriť veľkosť štruktúry alebo triedy najmenší násobok 8 bajtov. Napríklad rozšírenie 14 bajty 16 bajtov.
Stav
Spoločnosť Microsoft potvrdila, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v časti Vzťahuje sa na.
Ďalšie informácie
Ďalšie informácie o terminológii z oblasti aktualizácií softvéru získate po kliknutí na nasledujúce číslo článku publikovaného v databáze Microsoft Knowledge Base:
824684 Popis štandardnej terminológie použitej na popis aktualizácií softvéru od spoločnosti Microsoft
Kroky na reprodukovanie tohto problému
-
Vytvorenie aplikácie s názvom Test.cpp pomocou nasledujúci kód Visual Studio 2008 SP1:
typedef struct DskDecimal{
unsigned char precision;
unsigned char scaleFactor;
unsigned short value[ 5];
unsigned char maxPrecision;
unsigned char maxScaleFactor;
} DskDecimal;
int main()
{
DskDecimal decimal;
decimal.maxScaleFactor = 4;
DskDecimal self = decimal;
return self.maxScaleFactor;
} -
Aplikácia zostaviť pomocou nasledujúceho príkazu:
cl test.cpp/O2/MD
Očakávaný výsledok je 4. Skutočné výsledky však 0.