CA1900: Pole hodnot by měla být přenosná
Zboží | Hodnota |
---|---|
RuleId | CA1900 |
Kategorie | Microsoft.Přenositelnost |
Změna způsobující chybu | Rozbít - Pokud pole lze vidět mimo sestavení. Nerozbití – Pokud pole není viditelné mimo sestavení. |
Příčina
Toto pravidlo zkontroluje, že struktury deklarované s explicitním rozložením se správně zarovnají při zařazování do nespravovaného kódu v 64bitových operačních systémech. IA-64 neumožňuje nerovnané přístupy k paměti a proces se chybově ukončí, pokud toto porušení není opraveno.
Popis pravidla
Struktury s explicitním rozložením, které obsahuje nesprávně zarovnaná pole, způsobují chybové ukončení v 64bitových operačních systémech.
Jak opravit porušení
Všechna pole, která jsou menší než 8 bajtů, musí mít posuny, které jsou násobkem jejich velikosti, a pole, která mají 8 bajtů nebo více, musí mít posuny, které jsou násobkem 8. Dalším řešením je použít LayoutKind.Sequential
místo LayoutKind.Explicit
, pokud je rozumné.
Kdy potlačit upozornění
Toto upozornění by mělo být potlačeno pouze v případě, že dojde k chybě.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro