【发布时间】:2011-11-03 06:42:02
【问题描述】:
此 C# 代码的 C 等效项是什么?
[StructLayout(LayoutKind.Explicit)]
struct Test
{
[FieldOffset(0)] int a; // Integer at byte offset 0
[FieldOffset(1)] int b; // Integer at byte offset 1
[FieldOffset(3)] int c; // Integer at byte offset 3
};
(我不在乎它是否不可移植,例如int被假定为4字节等)
【问题讨论】:
-
我原以为即使它们是重叠的字段,它们仍然应该正确对齐。这实际上在任何平台上都有效吗?
-
@Jeff:AFAIK x86 不在乎。 (stackoverflow.com/questions/548164/mis-aligned-pointers-on-x86/…)
-
指针是一回事,而结构成员 AFAIK 是另一回事。
-
@Jeff:完全没问题,编译器可以在必要时执行未对齐的读取魔法。 Take a look at
bpb33here.
标签: c# c visual-c++