मेरे पास एक फाइल है जिसमें कई #define स्टेटमेंट जैसे -
#ifndef UTILITY_H # परिभाषित UTILITY_H # परिभाषित BUMP 7; # WHEEL_DROPS 7 को परिभाषित करें; # वॉल 8 को परिभाषित करें; # CLIFF_LEFT 9; # CLIFF_FRONT_LEFT 10; # CLIFF_FRONT_RIGHT 11 को परिभाषित करें; # CLIFF_RIGHT 12 को परिभाषित करें; #VIRTUAL_WALL 13 परिभाषित; ... ... #endif सूची में लगभग 42 विभिन्न मूल्यों पर जाता है मैं इस फाइल को मेरी दूसरी फ़ाइलों में शामिल करता हूं, लेकिन जब भी मैं इनमें से एक स्थिरांक का उपयोग करने की कोशिश करता हूं, तो मुझे त्रुटियां मिलती हैं I एक विशिष्ट उदाहरण के लिए, मैं करने की कोशिश करता हूं -
Sensor_Packet temp; Temp = robot.getSensorValue (BUMP); // लाइन 54 कॉट & lt; & lt; temp.values [0] & lt; & lt; endl; मेरे द्वारा प्राप्त त्रुटियां हैं -
main.cpp: 54: त्रुटि: अपेक्षित '' ????) ??? पहले एक "???"; टोकन main.cpp: 54: त्रुटि: अपेक्षित प्राथमिक-अभिव्यक्ति से पहले ????) ??? टोकन main.cpp: 54: त्रुटि: अपेक्षित '' ???? ;? पहले एक ????) टोकन मुझे नहीं पता कि मुझे ये त्रुटियां क्यों मिल रही हैं क्योंकि BUMP पहले ही परिभाषित है यह तब भी होता है जब मैं परिभाषित होने वाले मामलों के साथ एक स्विच स्टेटमेंट का उपयोग करने का प्रयास करता हूं -
स्विच (जो) {case BUMP: // do stuff केस CLIFF_LEFT: // do stuff} क्या ऐसा कुछ है जो मैं #define का उपयोग करने के बारे में छोड़ रहा हूं? मैंने सोचा था कि मुझे जो करना था, वह एक निरंतर परिभाषित किया गया था और फिर मैं उसे कॉल कर सकता था। किसी भी मदद की सराहना की जाती है।
अपने #define s पर एक करीब से नज़र डालें : <पूर्व> # बफ़ 7 को परिभाषित करें;
यह BUMP के साथ 7; को बदलने के लिए पूर्वप्रोसेसर को बताता है। ध्यान दें कि मैक्रो परिभाषा में अर्धविराम भी शामिल है!
तो आपका कोड वास्तव में इस तरह कम्पाइलर को दिखता है:
Sensor_Packet temp; Temp = robot.getSensorValue (7;); अदालत के & lt; & lt; temp.values [0] को & lt; & lt; endl; // ... स्विच (जो) {केस 7 ;: do do stuff case 9 ;: // do stuff} जो स्पष्ट रूप से वाक्यविन्यास त्रुटियाँ हैं इसे ठीक करने के लिए, अपने #define स्टेटमेंट्स में सेमीकॉलन को निकाल दें।
लेकिन सी ++ में, आपको const int s के बजाय स्थिरांक के लिए उपयोग करना चाहिए #define s का यहां कुछ संभव उदाहरण दिए गए हैं:
enum cliffpositions {CLIFF_LEFT = 9, CLIFF_FRONT_LEFT = 10, CLIFF_FRONT_RIGHT = 11, CLIFF_RIGHT = 12,}; वॉल्यूम वॉल्यूम {वॉल = 8, वर्ट्यूल_वाल = 13; } Const int BUMP = 7; Const int WHEEL_DROPS = 7; // etc ... यह तरीका बेहतर है क्योंकि #define s, const int s और enum < / कोड> सम्मान क्षेत्र और अधिक प्रकार सुरक्षित हैं।
Comments
Post a Comment