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 中导入了一些相同的类(如 Eric 所说的圆形)。所以,为了解决这个问题,我将导入从我的 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

我通过导入循环得到了它:

---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 回答
0

我能够使用 Gorgando 的修复解决这个问题,但我没有将导入移开,而是单独注释掉每个,构建应用程序,然后进行相应的编辑,直到我摆脱它们。

于 2011-08-28T15:21:52.980 回答
-1

当您在使用对象之前使用它时,基本上会出现此错误。

于 2015-09-14T06:53:20.060 回答