दुर्लभ मामलों में, यह उस रेखा को बदलने के लिए उपयोगी हो सकता है जो __LINE__
किसी और चीज द्वारा दी गई है। मैंने देखा है कि GNU कॉन्फ़िगर करता है कि कुछ परीक्षणों के लिए उपयुक्त लाइन नंबरों की रिपोर्ट करने के बाद यह उन लाइनों के बीच कुछ वूडू डालें जो मूल स्रोत फ़ाइलों में प्रकट नहीं होती हैं। उदाहरण के लिए:
#line 100
निम्न पंक्तियों को __LINE__
100 से शुरू करेगा। आप वैकल्पिक रूप से एक नया फ़ाइल-नाम जोड़ सकते हैं
#line 100 "file.c"
यह केवल शायद ही कभी उपयोगी है। लेकिन अगर इसकी जरूरत है, तो कोई विकल्प नहीं है जो मुझे पता है। दरअसल, लाइन के बजाय, एक मैक्रो का उपयोग किया जा सकता है, जिसके परिणामस्वरूप उपरोक्त दो रूपों में से किसी एक में परिणाम होना चाहिए। बूस्ट प्रीप्रोसेसर लाइब्रेरी का उपयोग करके, आप वर्तमान लाइन को 50 से बढ़ा सकते हैं:
#line BOOST_PP_ADD(__LINE__, 50)
मैंने सोचा कि यह जब से तुम के उपयोग के बारे में पूछा यह उल्लेख करने के लिए उपयोगी है __LINE__
और __FILE__
। किसी को भी C ++ से पर्याप्त आश्चर्य नहीं होता है :)
संपादित करें: @ जोनाथन लेफ़लर टिप्पणियों में कुछ और अच्छे उपयोग के मामले प्रदान करते हैं:
प्री-प्रोसेसर्स के लिए #line के साथ मैसेज करना बहुत उपयोगी होता है जो यूजर के C कोड में रिपोर्ट की गई त्रुटियों को यूजर की सोर्स फाइल के अनुरूप रखना चाहते हैं। Yacc, Lex, और (मेरे लिए घर पर अधिक) ESQL / C पूर्वप्रक्रमक ऐसा करते हैं।