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ě.