【问题标题】:What does this error mean: "error: expected specifier-qualifier-list before 'type_name'"?这个错误是什么意思:“错误:'type_name'之前的预期说明符限定符列表”?
【发布时间】:2010-10-11 03:01:40
【问题描述】:

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

【问题讨论】:

    标签: c++ c pointers struct


    【解决方案1】:

    编译器不知道 spe_context_ptr_t 是一种类型。编译此代码时,检查适当的 typedef 是否在范围内。您可能忘记包含相应的头文件。

    【讨论】:

    • 在我的情况下(对于一个 iPhone 项目),问题是我包含标题的方式我怀疑它会导致循环依赖。我通过在我的 .h 文件中使用 @class 参数提前声明类来解决它。一旦我这样做了,循环依赖就解决了,这个错误就消失了。如果有人在 XCode/Obj-C 中看到这个,请注意。
    • 谢谢,回复后看到了。但是你能解释一下为什么这是有效的吗?
    【解决方案2】:

    我有同样的错误信息,但解决方案不同。

    编译器从上到下解析文件。

    确保在将结构用于另一个结构之前定义它:

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

    【讨论】:

    • 使用示例代替(或同时)显示解决方案
    【解决方案3】:

    对于 iPhone 可可触摸项目:

    我遇到了这个问题,感谢 Eric Farraro 的评论,我得以解决。我在我的许多其他类中导入了一个类 WSHelper.h。但我也在我的 WSHelper.h 中导入了一些相同的类(如 Eric 所说的圆形)。因此,为了解决这个问题,我将 WSHelper.h 文件中的导入内容移到了 WSHelper.m 文件中,因为 .h 文件中并不真正需要它们。

    【讨论】:

      【解决方案4】:

      我通过导入循环得到它:

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

      【讨论】:

        【解决方案5】:

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

        typedef struct car_t {
        
           char
        
           wheel_t
        
        } car_t;
        

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-02-06
              • 1970-01-01
              • 2011-09-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多