0

次のような構造体の typedef が sampleHeader.h にあります。

typedef struct example Example;

そして私は私のsampleSource.cにあります:

struct example{
    char a[4];
    char b[4];
    char c[5];
}

何らかの理由で、作成された (および malloc された) 構造体を参照するメイン関数にポインターを戻し、各メンバーの値を出力しようとすると、「不完全なデリファレンスを行うことはできません」という行に沿ってエラーが発生しますタイプ"

何か案は?

4

2 に答える 2

1

ヘッダー ファイルでは、構造体を前方宣言しただけです。これで問題なく、ヘッダー (およびこのヘッダーを含む他のヘッダーまたは cpp ファイル) 内の構造体へのポインターと参照を宣言できます。

コンパイラは cpp モジュール内の定義しか認識していないため、値によって struct example 型の変数を宣言したり、メンバーにアクセスするためのポインターを逆参照したりできる唯一の場所です。cpp ファイルの外では、コンパイラは構造体の大きさやメンバーが何であるかを知りません。

複数のモジュールで構造体を使用する必要がある場合は、ヘッダーで一緒に構造体を宣言および定義します。

于 2013-10-08T20:32:43.863 に答える