2009-10-08 18 views
5

C# fornisce StructLayoutAttribute.Pack, ma il suo comportamento è "ogni membro ottiene almeno l'allineamento specificato che lo voglia o no", mentre il comportamento del pacchetto #pragma in C++ è "ogni membro ottiene l'allineamento desiderato, a meno che vuole più dell'allineamento specificato, nel qual caso non è garantito ottenere di più ".C# ha un equivalente al pacchetto #pragma in C++?

C'è un modo per far sì che il layout di una struct in C# sia lo stesso del layout di una struct simile in C++ con un pacchetto #pragma specifico, oltre all'uso di StructLayout (LayoutKind.Explicit) e FieldOffset su ogni membro o inserire membri di padding non utilizzati?

+0

Puoi fornire un esempio di codice che illustra la differenza che stai vedendo e il motivo per cui sta causando un problema? StructLayout.Pack ha sempre coperto le mie esigenze. –

risposta

6

Dopo aver sperimentato StructLayout.Pack, sembra che faccia esattamente la stessa cosa del pacchetto #pragma in C++. Ritenendo che la documentazione MSDN di StructLayout.Pack (che ha reclamato il comportamento descritto nel mio post originale) è stata un errore.