Tag: 对象布局

C vs C ++结构alignment

在最近的一次关于C ++结构体字段alignment的问题上,我被问到了这个问题,并且理论上C和C ++在结构打包中遵循相同的策略。 Hovewer,这是错误的假设。 面试官说,总的来说,C和C ++以不同的方式打包,我们不应该期待相反的结果。 恕我直言,这是奇怪的声明。 C ++中没有用于双C / C ++头文件的pack "C"限定符。 所以实际上,这可能意味着你不能在C ++中创build一个结构体,并把它传递给一个C库,因为通常它的字段将以不同的方式alignment,并且具有不同的偏移量。 但事实上,大多数程序员认真地依赖于这种互操作性,直到他们将一个指针转换为一个C POD结构为止,以及一些辅助方法引用C ++包装。 你能澄清这个问题吗?