मैं अपने कोड से डायग्नोस्टिक संदेशों को प्रिंट करने के लिए __FILE__
और __LINE__
मैक्रोज़ का उपयोग कर रहा था (था)। जब आप GCC का उपयोग करते हैं तो यह बहुत अच्छी तरह से काम करता है, फ़ाइल कमांड लाइन पर निर्दिष्ट के रूप में छोटा है। मैंने हाल ही में कोडलाइट का उपयोग करने के लिए स्विच किया है जो इमारत के दौरान पूरी तरह से योग्य फ़ाइल नाम (कम से कम विंडोज़ के तहत) का उपयोग करता है। अचानक मेरा डायग्नोस्टिक आउटपुट लगभग पठनीय नहीं है।प्रीप्रोसेसर में केवल फ़ाइल नाम कैसे प्राप्त करें?
प्रीप्रोसेसर में फ़ाइल नाम का केवल फ़ाइल घटक प्राप्त करने का कोई तरीका है? मैं एक गैर पोर्टेबल जीसीसी विशिष्ट समाधान के साथ रह सकता हूं। (मैं सादे __FILE__
अन्य मामलों पर वापस आने जाएगा।)
ज़रूर मैं एक समारोह के माध्यम से __FILE__
की सामग्री गुजरती हैं और केवल फ़ाइल घटक निकाल सकते हैं, लेकिन स्ट्रिंग आपरेशन क्या मैं नैदानिक संदेश है कि परिवर्तन नहीं होना चाहिए के लिए मन में था नहीं था क्रम व्यवहार ...
नोट: मैं फ़ाइल नाम जिस तरह से जीएनयू इसे इस्तेमाल करता है का उपयोग करें। एक पथ फ़ाइल नामों का संग्रह है और एक फ़ाइल नाम या तो फ़ाइल का एक सापेक्ष या पूर्ण पहचानकर्ता है। एक फ़ाइल नाम निर्देशिका घटक और फ़ाइल घटक से बना जा सकता है।
निदान परिवर्तन क्रम व्यवहार (अन्यथा कोई निदान होगा) करता है, और क्या आप कहते हैं एक अतिरिक्त समारोह उत्पादन के बाद से ही पुस्तकालय कार्यों बुला रहा है वैसे भी उत्पादन करना है, थोड़ा फर्क नहीं पड़ता। – eudoxos
डायग्नोस्टिक संदेश को प्रिंट करना आम तौर पर स्ट्रिंग ऑपरेशंस के दर्जनों के अलावा, कुछ गैर-सौम्य फ़ाइल I/O क्रियाओं के अलावा होता है। किसी कारण से कोई भी इसके बारे में चिंतित नहीं लगता है। किसी अन्य साइड-इफेक्ट-फ़्री फ़ंक्शन पर कॉल जोड़ने के बारे में चिंता क्यों करें जो केवल डायग्नोस्टिक संदेशों को प्रभावित करती है? –
आप दोनों सही हैं, डायग्नोस्टिक्स जोड़ना प्रभाव मुक्त नहीं है। मैंने इसे इस तरह कार्यान्वित किया, मैंने इसे एक समारोह के माध्यम से पारित करने दिया। मैं इसे और सोच रहा था जैसे यह अस्तित्व में है। यह निश्चित रूप से मानक नहीं है, लेकिन इसके बारे में दस्तावेज़ीकरण ढूँढना सही नहीं है। (यहां तक कि जीसीसी के मैनुअल हर पूर्वनिर्धारित मैक्रो की रूपरेखा तैयार नहीं है।) – rioki