在最近的一次采访中,有人问我关于 C++ 结构字段对齐的问题,并认为 C 和 C++ 在结构打包中遵循相同的策略。
然而,这是错误的假设。面试官说,通常 C 和 C++ 以不同的方式打包结构,我们不应该期望相反。恕我直言,这是奇怪的说法。C++ 中的结构没有pack "C"
用于双语 C/C++ 头文件的限定符。
因此,在实践中,这可能意味着您无法在 C++ 中创建结构并将其传递给 C 库,因为通常它的字段将以不同的方式对齐并具有不同的偏移量。但是,事实上,大多数程序员在使用一些辅助方法将指向 C POD结构的指针转换为对该结构的 C++ 包装器的引用之前,都非常依赖这种互操作性。你能澄清一下这个问题吗?