मेरे पास एक ऐसा प्रोग्राम है जिसे केवल DEBUG मोड में संकलित किया जाना चाहिए। (परीक्षण उद्देश्य)सी प्रीप्रोसेसर में त्रुटि या चेतावनी कैसे उत्पन्न करूं?
मैं प्रीप्रोसेसर रिलेज़ मोड में संकलन को कैसे रोक सकता हूं?
मेरे पास एक ऐसा प्रोग्राम है जिसे केवल DEBUG मोड में संकलित किया जाना चाहिए। (परीक्षण उद्देश्य)सी प्रीप्रोसेसर में त्रुटि या चेतावनी कैसे उत्पन्न करूं?
मैं प्रीप्रोसेसर रिलेज़ मोड में संकलन को कैसे रोक सकता हूं?
कहीं भी स्थान:
#ifndef DEBUG
#error Only Debug builds are supported
#endif
आप बस एक त्रुटि रिपोर्ट करना चाहते हैं:
#ifdef RELEASE
#error Release mode not allowed
#endif
सबसे compilers के साथ काम करेंगे।
आप इसके लिए error
निर्देश का उपयोग कर सकते हैं। निम्नलिखित कोड संकलन समय पर एक त्रुटि फेंक देंगे अगर DEBUG
परिभाषित नहीं है:
#ifndef DEBUG
#error This is an error message
#endif
सी एक #error
बयान प्रदान करते हैं और सबसे compilers एक #warning
बयान जोड़ें। संदेश उद्धृत करने के लिए The gcc documentation recommends।
@ एंटोनियो राइट, वहां कोई और [सिफारिश] नहीं है। मैंने लिंक को एक से जीसीसी दस्तावेज़ में बदल दिया। – philant
शायद कुछ और अधिक परिष्कृत, लेकिन यह केवल पिछले समाधानों के पेस्ट & प्रतिलिपि है। :-)
#ifdef DEBUG
#pragma message ("Debug configuration - OK")
#elif RELEASE
#error "Release configuration - WRONG"
#else
#error "Unknown configuration - DEFINITELY WRONG"
#endif
पीएस चेतावनी उत्पन्न करने का एक तरीका भी है। तरह
HereIsMyWarning:
unreferenced Labe बनाएँ और इसे संदर्भ नहीं है।
#if ! DEBUG
#define FIX_FOR_RELEASE(statement) _Pragma ("GCC error \"Must be fixed for release version\"")
#else
#define FIX_FOR_RELEASE(statement) statement
#endif
आप अस्थायी हैक्स के लिए इस मैक्रो का उपयोग कर सकते हैं: संकलन के दौरान आप की तरह
1>..\Example.c(71) : warning C4102: 'HereIsMyWarning' : unreferenced label
जीसीसी और बजना (और शायद किसी भी संकलक कि _Pragma सुविधा का समर्थन) आप मैक्रो निर्धारित कर सकते हैं के लिए चेतावनी हो जाएगी , उदाहरण के लिए, एक सह-कार्यकर्ता अभी तक नहीं लिखा है, यह सुनिश्चित करने के लिए कि आप जनता को एक बिल्ड जारी करना चाहते हैं, तो आप इसे ठीक करना भूल नहीं सकते हैं। या तो
FIX_FOR_RELEASE()
// Code that must be removed or fixed before you can release
या
FIX_FOR_RELEASE(statement that must be removed or fixed before you can release);
कोड :: ब्लाकों में, आप रिलीज मोड नहीं करना चाहते हैं, तो आप रिलीज मोड हटा सकते हैं। ऐसा करने के लिए, प्रोजेक्ट मेनू पर क्लिक करें, गुण चुनें ..., और बिल्ड लक्ष्य टैब में आप रिलीज पर क्लिक कर सकते हैं और फिर हटाएं बटन पर क्लिक कर सकते हैं। रिलीज मोड को हटाने से यह केवल वर्तमान प्रोजेक्ट के लिए होता है, ताकि आप इसे अन्य परियोजनाओं में अभी भी उपयोग कर सकें।
अन्यथा, आप वास्तव में पूर्वप्रक्रमक उपयोग करना चाहते हैं, तो आप ऐसा कर सकते हैं:
#ifdef RELEASE
#error "You have to use the Debug mode"
#endif
क्षमा करें, मैं pragma और त्रुटि मिश्रण लिखते समय। उत्तर में सुधार –