私は最近のインタビューで C++ 構造体フィールドのアライメントについて尋ねられ、C と C++ は構造体パッキングで同じ戦略に従うと理論付けました。
しかし、それは間違った仮定でした。インタビュアーは、一般的に C と C++ は異なる方法で構造体をパッキングしており、その逆を期待すべきではないと述べました。私見それは奇妙な声明です。pack "C"
バイリンガル C/C++ ヘッダー ファイルで使用するための C++ の構造体の修飾子はありません。
したがって、実際には、C++ で構造体を作成して C ライブラリに渡すことができないことを意味する可能性があります。一般に、そのフィールドは異なる方法で整列され、異なるオフセットを持つためです。しかし、実際には、ほとんどのプログラマーは、C POD構造体へのポインターを、いくつかのヘルパー メソッドを使用してこの構造体の周りの C++ ラッパーへの参照に変換する時点まで、この相互運用性に真剣に依存しています。この件について明確にしていただけますか?