उपयोग करें __LINE__
, लेकिन इसका प्रकार क्या है?
लाइन वर्तमान स्रोत लाइन (एक पूर्णांक स्थिरांक) के प्रकल्पित लाइन नंबर (वर्तमान स्रोत फ़ाइल के भीतर)।
एक के रूप में पूर्णांक निरंतर , कोड अक्सर यह मान सकते हैं मूल्य है __LINE__ <= INT_MAX
और इतने प्रकार है int
।
सी में मुद्रित करने के लिए, printf()
मिलान निर्दिष्ट करने की आवश्यकता है "%d"
:। C ++ में यह बहुत कम चिंता का विषय है cout
।
पेडिक चिंता: यदि पंक्ति संख्या INT_MAX
1 (16-बिट के साथ कुछ बोधगम्य int
) से अधिक है, तो उम्मीद है कि संकलक एक चेतावनी का उत्पादन करेगा। उदाहरण:
format '%d' expects argument of type 'int', but argument 2 has type 'long int' [-Wformat=]
वैकल्पिक रूप से, कोड इस तरह की चेतावनियों को व्यापक प्रकार के लिए मजबूर कर सकता है।
printf("Not logical value at line number %ld\n", (long) __LINE__);
//or
#include <stdint.h>
printf("Not logical value at line number %jd\n", INTMAX_C(__LINE__));
बचें printf()
सभी पूर्णांक सीमाओं से बचने के लिए: स्ट्रिंग करें । कोड printf()
कॉल के बिना सीधे प्रिंट कर सकता है : त्रुटि से बचने के लिए एक अच्छी बात 2 ।
#define xstr(a) str(a)
#define str(a) #a
fprintf(stderr, "Not logical value at line number %s\n", xstr(__LINE__));
fputs("Not logical value at line number " xstr(__LINE__) "\n", stderr);
1 निश्चित रूप से खराब प्रोग्रामिंग प्रैक्टिस के लिए इतनी बड़ी फ़ाइल होती है, फिर भी शायद मशीन जनित कोड अधिक हो सकता है।
2 डिबगिंग में, कभी-कभी कोड बस आशा के अनुसार काम नहीं कर रहा है। जैसे जटिल कार्यों को कॉल *printf()
करना मुद्दों को बनाम एक सरल तरीके से उकसा सकता है fputs()
।