1

libuvライブラリ(Cコード)に依存するC++コードがあります。セグメンテーション違反のためにクラッシュしています。問題を絞り込みました:libuvstruct statfromを使用し<sys/stat.h>ます。この構造体のサイズをコードに出力すると、次のようになります。

printf("struct stat size: %d\n", sizeof(struct stat));

88と表示されます。libuvライブラリで同じものを印刷すると、96と表示されます。これがセグメンテーション違反の原因です。私はここで少し立ち往生しています。型宣言の正確な場所を見つけるにはどうすればよいですか?この問題を解決する他のアプローチはありますか?

4

1 に答える 1

1

ソースをcc -E xxx.cで前処理し、そこで問題のある定義を探すことができます。前処理された#fileand#lineディレクティブはxxx.i、犯人のおおよその位置を示します。または#include <sys/stat.h>、最初の段階(ライブラリからのものの前)で、コンパイラは再定義するためにあなたに叫ぶ必要がありますstruct;-)

于 2013-02-19T16:24:53.147 に答える