我不确定这是否是一个问题,但肯定是一种好奇心。我有一个 C DLL,它导出一个采用 32 位整数和一个布尔值 (stdbool.h) 的函数。导出的函数(stdcall)表示参数列表为8字节(4字节int,4字节bool)。此 C DLL 还包含一个使用布尔值的结构。检查sizeof(bool)
表示 1 字节布尔值。
我有这个本机 DLL 的 .Net 包装器。编组结构时,我为每个布尔字段 UnmanagedType.U1 指定,一切正常,一切都正确对齐。我只使用了顺序布局,没有明确也没有任何偏移,也没有任何包装。
我的问题是,为什么布尔大小的明显差异?