2009-03-03 12 views
50

मैं सेल प्रोसेसर पर काम कर रहा हूं और मैं एक ऐसी संरचना बनाने की कोशिश कर रहा हूं जिसमें spe_context_ptr_t होगा, जिसका प्रयोग थ्रेड के भीतर एक spe संदर्भ लॉन्च करने के लिए किया जाएगा और यह किसी अन्य चीज़ के लिए पॉइंटर भी रखेगा थ्रेड के भीतर से स्पू संदर्भ में पारित किया गया (वर्तमान में मैं इसे एक सामान्य सूचक बनाने की कोशिश कर रहा हूं, लेकिन वास्तविकता में यह परिभाषित एक और संरचना के लिए एक सूचक होगा)।इस त्रुटि का क्या अर्थ है: "त्रुटि: 'type_name' से पहले अपेक्षित विनिर्देशक-योग्यता-सूची"?

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; 

उत्तर

61

संकलक नहीं जानता है कि spe_context_ptr_t एक प्रकार है: जब मैं कोशिश करते हैं और संकलन, मैं निम्नलिखित त्रुटि मिलती है। जांचें कि जब यह कोड संकलित किया गया है तो उपयुक्त टाइपपीफ दायरे में है। आप उचित हेडर फ़ाइल को शामिल करना भूल गए हैं।

+51

मेरे मामले में (एक आईफोन प्रोजेक्ट के लिए), समस्या यह थी कि मैं हेडर को इस तरह से शामिल कर रहा था कि मुझे संदेह है कि यह एक परिपत्र निर्भरता पैदा कर रहा था। मैंने @class पैरामीटर के साथ अपनी .h फ़ाइल में समय से पहले कक्षा को घोषित करके इसे हल किया। एक बार मैंने ऐसा करने के बाद, परिपत्र निर्भरता का समाधान किया और यह त्रुटि चली गई। कोई भी नोट अगर कोई इसे एक्सकोड/ओब्जे-सी में देख रहा है। –

+0

धन्यवाद, इसे responce के बाद देखा। लेकिन क्या आप समझा सकते हैं कि यह क्यों काम करता है और कैसे? – ymutlu

4

मुझे एक ही त्रुटि संदेश था लेकिन समाधान अलग है।

कंपाइलर फ़ाइल को ऊपर से नीचे तक पार करता है।

सुनिश्चित करें कि एक struct यह दूसरे में उपयोग करने से पहले परिभाषित किया गया है:

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

typedef struct 
{ 
    int weight; 
} wheel_t; 
+0

इसके बजाय समाधान दिखाने के लिए उदाहरण का उपयोग करें (या भी) –

0

आप इस तरह अपने struct नाम के लिए है:

typedef struct car_t { 

    char 

    wheel_t 

} car_t; 
2

iPhone कोको स्पर्श परियोजनाओं के लिए:

मुझे यह समस्या थी और एरिक फरारो की टिप्पणी के लिए धन्यवाद, मैं इसे हल करने में सक्षम था। मैं अपने कई अन्य वर्गों में एक कक्षा 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 
0

मैं एक आयात पाश के साथ मिल गया जब तक मैं उनसे छुटकारा नहीं पाता।

0

मैं Gorgando के ठीक उपयोग करते हुए इस सुलझाने के लिए सक्षम था, लेकिन आयात दूर जा रहा करने के बजाय, मैं एक बाहर व्यक्तिगत रूप से टिप्पणी की, ऐप्लिकेशन बनाया, फिर उसके अनुसार संपादित:

0

@simpleBob

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

---FILE A.h 

@class B; 

@interface A{  
} 
@end 

कोड ऊपर मुझे इसे सुलझा में मदद की। क्या कोई यह बता सकता है कि यहां क्या हो रहा है?

-1

यह त्रुटि मूल रूप से तब आती है जब आप इसका उपयोग करने से पहले ऑब्जेक्ट का उपयोग करते हैं।

संबंधित मुद्दे