関数型プログラミング言語Haskell Part16
レス数が900を超えています。1000を超えると表示できなくなるよ。
0939デフォルトの名無しさん
2012/01/02(月) 02:01:59.64C言語で構造体と、それを引数として受ける関数などを作りました(*.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++ のコンパイラなどとその辺りの仕様が同じ場合もあるでしょうが)
レス数が900を超えています。1000を超えると表示できなくなるよ。