FFI 関連について質問です

C言語で構造体と、それを引数として受ける関数などを作りました(*.h、*.c)

*.hsc ファイル内でそのヘッダファイルを include し、
C言語で定義したのと同じ構造のデータ型を定義しました
そして、Storable 型のインスタンス宣言の中で、
#size や #alignment マクロを使って
Storable.sizeOf や Storable.alignment を定義しました

(#alignment マクロは下記のサイトのものをそのまま使いました
http://stackoverflow.com/questions/8350706/how-do-i-find-the-alignment-value-when-defining-a-storable-instance
ghc 7.2.2 ですけど、まだ組み込みマクロではないようですね)

そのあと、ghc2hs コマンドで *.hsc から *.hs を生成し、
また *.c をコンパイルして *.o を生成し、
それらを一緒に ghc でビルドしようと思います
(まぁ実際は、*.c のまま ghc に一緒に放り込んでも良いわけですが)

そこで質問なのですが、この場合、
*.c は ghc 付属の gcc、あるいは別に用意した同Var.の gcc でコンパイルしないと、
構造体のメモリマップが ghc2hs の解釈と(理論上は)合わないと思うのですが、
この認識は間違ってないでしょうか

正確に言えば、ghc の -pgmc オプションで指定したC言語コンパイラ、
hsc2hs の --cc オプションで指定したC言語コンパイラ、
そして *.c をコンパイルしたC言語コンパイラ、
この3つのコンパイラが同じ物でないと危険なのではないでしょうか
(たまたま、VC++ のコンパイラなどとその辺りの仕様が同じ場合もあるでしょうが)