这个错误意味着什么:“错误:'type_name'之前的预期说明符 - 限定符列表”?

时间:2009-03-03 21:04:00

标签: c++ c pointers struct

我一直在研究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;

8 个答案:

答案 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)

这个错误基本上是在你使用它之前使用它。