हालांकि यह समस्या हेक्स फ़्लोटिंग पॉइंट स्थिरांक के रास्ते से संबंधित है, समस्या का मूल कारण यह नहीं है क्योंकि 0x11E
एक हेक्स फ्लोट स्थिरता की शुरुआत है (क्योंकि यह एक हेक्स फ़्लोटिंग स्थिरता की शुरुआत नहीं है)।
समस्या यह है कि 0x11E-252
0x11F-252
जैसे तीन टोकन के बजाय एक एकल टोकन है। आप C99 6.4.8 को देखें, तो "संख्या Preprocessing", आप देखेंगे कि एक पीपी-संख्या टोकन है: (।)
एक preprocessing संख्या अंक के एक वैकल्पिक अवधि से पहले के साथ शुरू होता है और पालन किया जा सकता वैध पहचानकर्ता अक्षर और चरित्र से अनुक्रम ई +, ई, ई +, ई, पी +, p-, पी +, या पी
तो, 0x11E-252
एक भी निशानी है और tokenizing अनुवाद चरण 3 में होता है, लेकिन जब टोकन को वाक्य रचनात्मक और अर्थात् (जो अनुवाद चरण 7 में होता है) की व्याख्या करने का समय आता है, तो यह वाक्य रचनात्मक रूप से मान्य नहीं है, इसलिए आपको एक कंपाइलर त्रुटि मिलती है।
दूसरी ओर, 0x11F-252
तीन टोकन क्योंकि -
एक preprocessing संख्या टोकन का हिस्सा जब तक कि यह तुरंत एक P
या E
(ऊपरी या लोअरकेस) से पहले नहीं है।
बेशक, यह फ्लोट स्थिरांक (हेक्साडेसिमल या अन्यथा) से संबंधित है क्योंकि यही कारण है कि -
चरित्र प्रीप्रोकैसिंग संख्या टोकन के बीच में समाप्त हो सकता है। हालांकि, ध्यान दें कि आपको 0xx11F
या 22bad_token
जैसे टोकन के लिए एक ही त्रुटि संदेश मिलेगा, जिसमें हेक्स फ़्लोटिंग पॉइंट निरंतरता के समान कोई समानता नहीं है।
फिक्स as ouah noted है, -
से पहले व्हाइटस्पेस डालें ताकि संकलक को एक से अधिक टोकन के रूप में अनुक्रम का इलाज करने के लिए मजबूर किया जा सके। यदि यह आपका कोड था, तो उन सभी जादू संख्याओं (enums या macros) को नाम देने के लिए एक बेहतर समाधान हो सकता है। -
के बाद एक पहचानकर्ता को एक टोकन नहीं माना जाएगा।इसके अलावा आप उम्मीद करेंगे कि कोड को थोड़ा और अधिक दस्तावेज़ बनाने का बोनस होगा।
स्रोत
2012-08-16 00:06:10
आप किस कंपाइलर का उपयोग कर रहे हैं? यह एक कंपाइलर बग है जो जीसीसी 2.95, शायद शुरुआती जीसीसी 3.x, और शायद अन्य कंपाइलर्स में मौजूद था। –
@ आर। - यह त्रुटि मेरे लिए हाल ही में जीसीसी 4.6.1 के साथ होती है - एक बग को "रिवॉल्व इनवाल्ड" के रूप में बंद किया जाता है: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3885 ट्रैकिंग की एक खुली बग है नैदानिक मित्रवत बनाना: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24976 –
@ आर ..: मैं क्यूटी फ्रेमवर्क का उपयोग कर रहा हूं, तो मुझे लगता है कि मैं जीसीसी कंपाइलर का उपयोग कर रहा हूं? मुझे विंडोज़ (मिंगडब्लू) और लिनक्स (पीसीएससी-लाइट का उपयोग करने के लिए संशोधित) पर एक ही त्रुटि मिली (जीसीसी 4.5.2) – amree