たとえば、共有ライブラリに対応する次のヘッダーファイルを想定します。エクスポートされた関数は、このヘッダーで定義されたカスタム構造へのポインターを取ります。
// lib.h
typedef struct {
char c;
double d;
int i;
} A;
DLL_EXPORT void f(A* p);
共有ライブラリが1つのコンパイラを使用して構築され、別のコンパイラで構築されたCコードから使用される場合、C構造体のメモリアライメントが示唆するように、メモリアライメントが異なるために機能しない可能性があります。それで、同じプラットフォーム上の異なるコンパイラ間で構造定義を移植可能にする方法はありますか?
私は特にWindowsプラットフォームに興味があります(明らかに、明確に定義されたABIがありません)が、他のプラットフォームについても知りたいと思います。