ماذا يعني هذا الخطأ: "الخطأ: المتوقع محدد-تصفيات القائمة قبل" TYPE_NAME "؟

StackOverflow https://stackoverflow.com/questions/608175

  •  03-07-2019
  •  | 
  •  

سؤال

ولقد تم العمل على معالج الخلية وأنا أحاول أن إنشاء البنية التي ستعقد spe_context_ptr_t، والتي سيتم استخدامها ضمن موضوع لإطلاق السياق جمعية مهندسي البترول وسيعقد أيضا مؤشر إلى شيء آخر من شأنها أن تمريرها إلى سياق رغاوي من داخل موضوع (حاليا أحاول أن يجعل مجرد أنها مؤشر عام، ولكن في واقع الأمر سيكون مؤشر إلى بنية أخرى لقد محددة). عندما أحاول وتجميع، وأحصل على الخطأ التالي:

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 هو نوع. تأكد من أن typedef والمناسب في النطاق عندما يتم ترجمة هذا الرمز. كنت قد نسيت لتضمين ملف رأس المناسب.

نصائح أخرى

وكان لي نفس رسالة الخطأ ولكن الحل هو مختلف.

والمترجم بتوزيع الملف من أعلى إلى أسفل.

تأكد من يتم تعريف البنية قبل استخدامه إلى آخر:

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

typedef struct
{
    int weight;
} wheel_t;

لمشاريع فون الكاكاو التي تعمل باللمس:

وكان لي هذه المشكلة وذلك بفضل تعليق اريك Farraro، وكنت قادرا على الحصول عليه حلها. كنت استيراد WSHelper.h فئة في العديد من زملائي من الفئات الأخرى. ولكن أنا أيضا تم استيراد بعض من هذه الفئات نفسها في بلدي WSHelper.h (التعميم مثل اريك قال). لذلك، لإصلاح هذا انتقلت الواردات من ملف WSHelper.h جهدي لملف WSHelper.m بلدي لأنها لم تكن ضرورية حقا في ملف .H على أي حال.

وحصلت عليه مع حلقة الاستيراد:

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

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

لديك على سبيل المثال البنية الخاصة بك مثل ما يلي:

typedef struct car_t {

   char

   wheel_t

} car_t;

وكنت قادرا على حل هذه المسألة باستخدام الإصلاح Gorgando، ولكن بدلا من نقل واردات بعيدا، وأنا وعلق كل من على حدة، بناء التطبيق، ثم تحريرها وفقا لذلك حتى حصلت على التخلص منها.

وsimpleBob

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

---FILE A.h

@class B;

@interface A{      
}
@end

ورمز أعلاه ساعدني ترتيب هذا الامر. يمكن للشخص أن يفسر ما يجري هنا؟

وهذا الخطأ يأتي أساسا عند استخدام الكائن قبل استخدامه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top