./24928 > En théorie, le compilateur JIT de .NET fait ça. Je dis en théorie car c'est documenté, mais j'ai jamais vérifié en pratique, et de toutes façons, cela peut être désactivé avec un attribut. Pour les class, le layout par défaut est auto, et pour les struct le layout par défaut est manuel. Après en .NET ça peut marcher car le JIT est une entité omnisciente (et il y a des règles spéciales pour l'interop), donc c'est pas pareil qu'en C/C++.
Mais du coup c'est en effet pas une question de compilateur.
Par contre pour moi, l'ordre des champs d'une structure, tel que spécifié dans le code, je considère ça comme faisant partie de l'API et non de l'ABI… Je ne serais jamais convaincu par l'argument de Kevin.