在最近的一次访谈中,我被问及C++ struct 域的对齐方式,并在C struct 中用C和C++来遵循相同的策略.
霍维尔,这是错误的假设.采访者说,一般来说,C和C++都是用不同的方式来包装 struct ,我们永远都不要期望相反的东西.这是一个奇怪的说法.C++中的pack "C"
个 struct 限定符用于双语C/C++头文件.
因此,在实践中,这可能意味着您不能在C++中创建 struct 并将其传递给C库,因为一般来说,它的字段将以不同的方式对齐,并且具有不同的偏移量.但是,事实上,大多数程序员在使用一些帮助器方法将指向CPOD struct 的指针转换为对该 struct 周围的C++包装器的引用之前,都非常依赖这种互操作性.你能澄清一下这件事吗?