2011-12-19 8 views
5

मैं सी में एक ब्रेनफक दुभाषिया लिख ​​रहा हूं, और मुझे कुछ ऐसे उपयोगों के उपयोग में परेशानी हो रही है जिसका उपयोग मैं नहीं कर रहा हूं। Brainfuck में, एक अल्पविराम (,) अनिवार्य रूप से getchar() है। तो मैं निम्नलिखित कोड है:त्रुटि: एक लेबल केवल एक कथन का हिस्सा हो सकता है

//This is just ptr 
static char *ptr; 

switch (command) 
{ 
    case ',': 
    *ptr=getchar(); // Here's the code causing error 
    break; 
} 

जीसीसी मुझ पर error: a label can only be part of a statement and a declaration is not a statement फेंकता है जब मैं इस संकलन करने का प्रयास करें।

कोई विचार?

+6

क्या यह 'स्विच' कथन के अंदर है? – Constantinius

+0

आप और अधिक कोड दिखाएं; और शायद त्रुटि में लाइन पर अर्ध-कॉलन ';' जोड़ें। –

+0

हां यह एक स्विच में है, मुझे लगता है कि मैंने इसे छोड़ दिया है। – MadPumpkin

उत्तर

7

(यह है, तो इस त्रुटि से परिचित नहीं के बारे में क्षमा करें) मेरा मानना ​​है कि आप

*ptr = getchar(); 
बजाय

ptr*=getchar(); 

*= क्योंकि साधन पर मूल्य के साथ बाईं ओर मूल्य गुणा मतलब दाएं तरफ और इसे बाएं मूल्य पर असाइन करें। हालांकि, आप dereferenceptr और उस स्थान पर getchar का परिणाम लिखना चाहते हैं।


कि आपके कोड जीसीसी की मेरी संस्करण के साथ बिल्कुल ठीक संकलित (अगर मैं command कहीं घोषित) है, तो आप स्पष्ट रूप से कर रहे हैं हमें पूर्ण उदाहरण नहीं दिखाई दे रहा अलावा

+0

हां, मेरी गलती, मैंने इसे अभी भी अपने कोड में ठीक कर दिया है। यह वही त्रुटि दिखाता है। – MadPumpkin

+0

पीआरटी * = getchar() एक अलग त्रुटि देगा: 'त्रुटि: बाइनरी * के लिए अवैध ऑपरेंड (char * और int)' प्रश्न में से कोई नहीं। – Karthik

+0

@ कार्तिक: अच्छा बिंदु। लेकिन वे संबंधित हो सकते हैं। अन्यथा, मैं प्रस्तुत कोड में कोई त्रुटि नहीं देख सकता। – bitmask

1

यह मेरी गलती पूरी तरह से थी, मैंने पहले इससे पहले कोड को टिप्पणी की थी। मैंने सोचा था कि यह कोड एक ही समय में दोनों कोडों पर टिप्पणी करने के कारण त्रुटि उत्पन्न कर रहा था, और यह इस त्रुटि को उत्पन्न नहीं कर रहा था। हालांकि मैंने दोनों को टिप्पणी करने की कोशिश की, और अब मैं समझता हूं क्यों।

यह FILE के बारे में कुछ था और एक अलग मामले में मेरी तलाश का उपयोग कर रहा था।

+0

अगर मैं हर समय एक निकल प्राप्त कर सकता था तो मुझे एक सी वाक्यविन्यास त्रुटि का सामना करना पड़ा जो कि एक और वाक्यविन्यास त्रुटि के अंदर मौजूद क्रिसमस की तरह लपेटा गया था, मैं एक बहुत अमीर आदमी होगा। सी इसके ऊपर है, और इसके नीचे इस तरह के नीचे है। –

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