- 締切済み
GCC pack-structパラメータ
構造体にファイルからデータを直接、読みこませたい時、pack-structパラメータを付けてコンパイルしますが、その時、stat関数を使用しているとstat構造体のデータがずれてうまく動作しません。pack-structパラメータを使用してコンパイルしてもstatが正常に動作する方法があれば教えて下さい。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.3
#1 の補足を読む限りでは, ファイルに出力するときとファイルから読み込むときで pack が同じであればいいような気がします. pack しなくても (ゴミが書き出される/読み込まれるかもしれないだけで) 問題ないと思うのですが.
noname#30727
回答No.2
#pragma pack(1) #pragma pack() で構造体を挟む
- JaritenCat
- ベストアンサー率37% (122/322)
回答No.1
状況がいまいち分かりませんが、ファイルにstat構造体の内容を書き込んでおいて、それをファイルから読み込もうとしているのでしょうか。 pack-structは必要ないように思いますが。 それにstat関数はpack-struct付きでコンパイルされてないですよね?
補足
まさに、stat関数がpack-structでコンパイルされていない事が問題なのですが。以下のようなプログラムの時、皆さんはどの様にされていますか。 typedef struct { char a; int b; char c[10]; int d; } _Sanple; _Sanple SD; int main(int argc, char **argv) { int fp; if ((fp = open("sanple.dat", O_RDONLY)) == -1) exit(1); read(fp, (char *)&SD, sizeof(_Sanple)); printf("%c %d\n", SD.a, SD.b); このプログラムが期待どうりに動作させようと思えばpack-structパラメータを付けてコンパイルしないといけないと思いますが、stat関数を使用しているとpack-structパラメータが使えません。色々とためしてみましたが中々うまくかないなで、なにか良い方法があればと 質問しました。