たとえば、共有ライブラリに対応する次のヘッダーファイルを想定します。共有ライブラリは、1つのコンパイラを使用して構築され、それが異なるためで動作しない可能性があり、別のコンパイラで構築されたCコードから使用されている場合C構造体の整列とコンパイラ間の移植性
// lib.h
typedef struct {
char c;
double d;
int i;
} A;
DLL_EXPORT void f(A* p);
:エクスポートされた関数は、このヘッダに定義されたカスタム構造体へのポインタを取りメモリアライメントは、Memory alignment in C-structsが示唆しているとおりです。だから、私の構造体定義を同じプラットフォーム上の異なるコンパイラ間で移植可能にする方法はありますか?
私は特にWindowsプラットフォームに興味があります(明らかにABIは明確に定義されていません)が、他のプラットフォームについても知りたいと思うでしょう。
いいえ、誰かがそれを保証しない限り。 –
重複はありません。少なくとも選択された質問のうちではありません。これは単独で立つことができます。 –
"struct alignment"という単語を含む質問は、それが何もしなくても自動的に他の質問と重複していますか? –