みなさんこんにちは!
ゲーム Clever Frog のコードをテストしようとしたときに、次のエラーが発生しました: エラー: 不完全な型へのポインターを逆参照しています。
「完全なコード」は、pastebin.com にあります -こちら(有効期限はありません)。しかし、以下の説明で誰でも理解できると思います。注:割り当てられたメモリなどを消去する機能はまだ実装していません。
1.c ファイルで定義された構造体があります。
#include "1.h"
...
struct test {
int a;
};
...
私はそれを使用するtypedefを持っている1.hを持っています:
...
typedef struct test testT;
...
次に、2.cにあるtestTに応じてパラメーターを持つ関数があります。
...
void funcTest(testT **t, int *size, ..){
/* another function that creates mem.space/alocate memory based enter code here`on the need of size above */
createMem(t,*size); /* void createMem(testT **t, int size); */
t[0]->a = 0; /*ERROR HERE*/
/* ... more code ... */
}
...
2.h ファイルは次のようになります。
...
void funcTest(testT **t, int *size, ..);
...
メインプログラムで、以下のようにtestT *varを渡します。
...
testT *varTest; int size;
funcTest(&varTest, &size);
...
奇妙なことは、1.h ファイルで構造体テストを使用するとコードがコンパイルされることです (構造体テストを 1.c から削除する - これは間違っています)。しかし、コンパイルされたプログラムを実行すると、エラーが発生する正確な場所はt[0]->aの場所です。
私はすでに「すべて」を試しましたが、何も機能しませんでした:(私はそれが非常にばかげていると信じているので、誰かが何か知っているなら教えてください:Dありがとう!