51

私はCellプロセッサに取り組んでおりspe_context_ptr_t、スレッド内でspeコンテキストを起動するために使用される構造体を保持する構造体を作成しようとしています。スレッド内からの spu コンテキスト (現在、私はそれを汎用ポインターにしようとしていますが、実際には、私が定義した別の構造体へのポインターになります)。コンパイルしようとすると、次のエラーが発生します。

spu/../common.h:38: error: expected specifier-qualifier-list before 'spe_context_ptr_t'

// here is the offending line(s)

typedef struct _PTHREAD_BLOCK {
    spe_context_ptr_t * context; // Error happens here
    uintptr32_t  args; 
 } PTHREAD_BLOCK;
4

7 に答える 7

62

コンパイラは、spe_context_ptr_t が型であることを知りません。このコードのコンパイル時に、適切な typedef がスコープ内にあることを確認してください。適切なヘッダー ファイルをインクルードするのを忘れている可能性があります。

于 2009-03-03T21:07:06.080 に答える
4

同じエラー メッセージが表示されましたが、解決策は異なります。

コンパイラはファイルを上から下に解析します。

別の構造体で使用する前に、構造体が定義されていることを確認してください。

typedef struct
{
    char name[50];
    wheel_t wheels[4]; //wrong, wheel_t is not defined yet
} car_t;

typedef struct
{
    int weight;
} wheel_t;
于 2009-12-16T15:14:47.080 に答える
2

iPhone ココアタッチ プロジェクトの場合:

私はこの問題を抱えていましたが、Eric Farraro のコメントのおかげで解決できました。他の多くのクラスでクラス WSHelper.h をインポートしていました。しかし、私はWSHelper.hに同じクラスのいくつかをインポートしていました(エリックが言ったように円形)。したがって、これを修正するために、インポートを WSHelper.h ファイルから WSHelper.m ファイルに移動しました。.h ファイルでは実際には必要ないからです。

于 2010-06-17T14:56:09.723 に答える
0

次のように構造体に名前を付ける必要があります。

typedef struct car_t {

   char

   wheel_t

} car_t;
于 2010-04-08T15:53:43.600 に答える
0

Gorgando の修正を使用してこれを整理することができましたが、インポートを移動する代わりに、それぞれを個別にコメントアウトし、アプリをビルドしてから、それらを取り除くまで適宜編集しました。

于 2011-08-28T15:21:52.980 に答える
0

インポートループで取得しました:

---FILE B.h
#import "A.h"
@interface B{
  A *a;
}
@end

---FILE A.h
#import "B.h"
@interface A{      
}
@end
于 2010-08-20T10:02:32.753 に答える
-1

このエラーは基本的に、オブジェクトを使用する前に使用すると発生します。

于 2015-09-14T06:53:20.060 に答える