这个错误是什么意思:“错误:在'type_name'之前预期说明符 – 限定符列表”?

我一直在处理单元处理器,我试图创build一个结构,将持有一个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; 

编译器不知道spe_context_ptr_t是一个types。 编译此代码时,请检查是否存在适当的typedef。 您可能忘记了包含适当的头文件。

我有相同的错误消息,但解决scheme是不同的。

编译器从上到下parsing文件。

确保一个结构被定义之前使用到另一个:

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

对于iPhonecocoa触摸项目:

我有这个问题,并感谢埃里克·法拉罗的评论,我能够得到解决。 我在许多其他类中导入了一个WSHelper.h类。 但是我也在WSHelper.h中导入了一些相同的类(像Eric所说的那样)。 所以,为了解决这个问题,我把从WSHelper.h文件导入到我的WSHelper.m文件中,因为它们在.h文件中并不是真正需要的。

我得到了一个导入循环:

 ---FILE Bh #import "Ah" @interface B{ A *a; } @end ---FILE Ah #import "Bh" @interface A{ } @end 

你必须像这样命名你的结构:

 typedef struct car_t { char wheel_t } car_t; 

我可以使用Gorgando的修复方法将其解决,但我并没有将import移走,而是单独评论,build立了应用程序,然后进行相应的编辑,直到我摆脱它们。

@simpleBob

 ---FILE Bh #import "Ah" @interface B{ A *a; } @end ---FILE Ah @class B; @interface A{ } @end 

上面的代码帮我整理了一下。 有人能解释一下这里发生了什么吗?

这个错误基本上是在使用对象之前使用它的。