2010-05-24 10 views
5

जीसीसी मुझे यह बताने के लिए पसंद करता है कि मैं अपने त्रुटि संदेशों में एक विशिष्ट-क्वालीफायर-सूची खो रहा हूं।एक विशिष्ट-योग्यता-सूची क्या है?

मुझे पता है कि इसका मतलब है कि मैंने सही प्रकार में कुछ नहीं रखा है।

लेकिन वास्तव में एक विशिष्ट-योग्यता-सूची है?

संपादित करें:

उदाहरण सी कोड है कि कारण बनता है यह:

Lappy:code chpwn$ gcc test.c 
test.c: In function ‘main’: 
test.c:4: error: expected specifier-qualifier-list before ‘undefined_type’ 
+2

शायद आप कोड की एक पंक्ति का एक उदाहरण दिखा सकते हैं जो त्रुटि उत्पन्न करता है? –

+1

हमारे उन लोगों के लिए मुश्किल है जिन्होंने यह भी अनुमान लगाया है कि आप जो भी गलती नहीं कर रहे हैं, आप अनुमान लगा रहे हैं कि आप क्या गलती कर रहे हैं - इसलिए एक उदाहरण बहुत मदद करेगा। –

+1

मैंने एक उदाहरण जोड़ा। –

उत्तर

5

यह विनिर्देशक और :-) विनिर्देशक क्वालिफायर हैं चीजों की एक सूची है:

#include <stdio.h> 

int main(int argc, char **argv) { 
    struct { undefined_type *foo; } bar; 
    printf("Hello, world!"); 
} 

जीसीसी से इन त्रुटियों को देता है जैसे void, char, struct Foo, आदि, और क्वालीफायर const औरजैसे कीवर्ड हैं। परिभाषा के लिए this C grammar देखें।

आपके मामले में, undefined_type अभी तक परिभाषित नहीं किया गया था, इसलिए पार्सर ने इसे पहचानकर्ता के रूप में देखा, न कि एक विशिष्ट-योग्यता-सूची की अपेक्षा की गई। यदि आप इसकी घटना से पहले typedef ... undefined_type; पर थे, तो undefined_type एक विशिष्ट बन जाएगा।

यदि आप संदर्भ-मुक्त व्याकरण के साथ सी को पार्सिंग के मामले में सोचते हैं, तो जिस तरह से कंपाइलर टाइपपीफ को संभालता है और ऐसा परेशान हो सकता है। अगर मैं सही ढंग से समझता हूं, तो यह प्रतीक तालिका संचालन में घुसपैठ करके पार्सर जेनरेटर गेम करता है ताकि यह स्रोत कोड को पार्स करने के लिए संदर्भ का उपयोग कर सके।

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