我一直在研究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;
答案 0 :(得分:61)
编译器不知道spe_context_ptr_t是一种类型。编译此代码时,请检查相应的typedef是否在范围内。您可能忘记包含相应的头文件。
答案 1 :(得分: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;
答案 2 :(得分:2)
对于iPhone可可触摸项目:
我有这个问题,感谢Eric Farraro的评论,我能够解决它。我在很多其他类中导入了一个WSHelper.h类。但我也在我的WSHelper.h中导入了一些相同的类(如Eric所说的那样)。因此,为了解决这个问题,我将导入从我的WSHelper.h文件移动到了我的WSHelper.m文件,因为它们在.h文件中并不是真的需要。
答案 3 :(得分:0)
你必须像这样命名你的结构:
typedef struct car_t {
char
wheel_t
} car_t;
答案 4 :(得分:0)
我通过导入循环得到它:
---FILE B.h
#import "A.h"
@interface B{
A *a;
}
@end
---FILE A.h
#import "B.h"
@interface A{
}
@end
答案 5 :(得分:0)
我能够使用Gorgando的解决方案对此进行排序,但不是将导入移出,而是单独评论每个,构建应用程序,然后相应地进行编辑,直到我摆脱它们。
答案 6 :(得分:0)
@simpleBob
---FILE B.h
#import "A.h"
@interface B{
A *a;
}
@end
---FILE A.h
@class B;
@interface A{
}
@end
上面的代码帮助我解决了问题。有人能解释一下这里发生了什么吗?
答案 7 :(得分:-1)
这个错误基本上是在你使用它之前使用它。