2010-01-26 16 views
19

sprintf का उपयोग करते समय, संकलक मुझे चेतावनी देता है कि फ़ंक्शन को बहिष्कृत किया गया है।मेरी खुद की कंपाइलर चेतावनी जोड़ें

मैं अपनी खुद की कंपाइलर चेतावनी कैसे दिखा सकता हूं?

+1

क्या sprintf बहिष्कृत किया जा रहा है इस सवाल के साथ क्या करना है? –

+0

बस एक कंपाइलर चेतावनी का एक उदाहरण जिसे "उपयोगकर्ता" द्वारा रखा गया था और पूरी तरह से संकलक द्वारा उत्पन्न नहीं किया गया था। – Warpin

उत्तर

19

Visual Studio में,

#pragma message ("Warning goes here")

एक तरफ ध्यान दें, यदि you want to suppress such warnings, संकलक चेतावनी आईडी मिल (पदावनत चेतावनी के लिए, यह C4996 है) और इस लाइन डालने:

#pragma warning(disable : 4996)

+0

यह बिल्कुल ठीक नहीं करता है जो मार्टिन चाहता है, हालांकि - वह चाहता है कि जब कार्य संकलित हो, तो यह कार्य चेतावनी जारी नहीं किया जाता है, जब इसे संकलित नहीं किया जाता है। –

+0

मुझे लगता है कि मेरा प्रश्न किसी भी तरह से पढ़ा जा सकता था (इसके लिए खेद है!), लेकिन यह वही था जो मैं ढूंढ रहा था। – Warpin

12

फ़ंक्शन को बहिष्कृत करने के लिए चिह्नित करने के लिए, __declspec(deprecated) का उपयोग करें, उदा।

__declspec(deprecated) void f(); 
+1

मुझे लगता है कि ओपी वास्तव में चाहता था। – LiraNuna

+2

वह अपनी चेतावनी दिखाने के लिए कहता है, एक विशिष्ट * बहिष्कृत * चेतावनी नहीं। –

18

हालांकि इसका कोई मानक #warning directice, कई compilers (जीसीसी, कुलपति, इंटेल और सेब सहित) है, समर्थन #warning message

#warning "this is deprecated" 

अक्सर यह बेहतर है न केवल एक चेतावनी है (जो लोगों को नजरअंदाज कर सकते हैं) को लाने के लिए है, लेकिन पूरी तरह से असफल संकलन, #error निर्देश (जो मानक है) का उपयोग करने देने के लिए:

#if !defined(FOO) && !defined(BAR) 
# error "you have neither foo nor bar set up" 
#endif 
+6

एमएसवीसी ++ 2013 इसका समर्थन नहीं करता है। –

+0

यह नहीं देख सकता कि यह काम करता है एमएसवीसी ++ 2015 या 2017 में या तो – Zitrax

6

में कुलपति आप चेतावनी संकलन के अंत में चेतावनी गिनती में दिखाने के लिए चाहते हैं, तो आप इस स्वरूप का उपयोग करने की आवश्यकता है:

#pragma message(": warning<put what you like here>: blah blah blah") 

महत्वपूर्ण अनुक्रम है: पेट, अंतरिक्ष, "वा रिंग ", कुछ या कुछ नहीं, कोलन," आपका चेतावनी पाठ "

यदि आप फैंसी बनना चाहते हैं तो फ़ाइल और लाइन नंबर को पहले कोलन से पहले जोड़ा जा सकता है ताकि आप कोड पर कूदने के लिए इसे डबल क्लिक कर सकें (microsoft.com से):

// pragma_directives_message1.cpp 
// compile with: /LD 
#if _M_IX86 >= 500 
#pragma message("_M_IX86 >= 500") 
#endif 

#pragma message("") 

#pragma message("Compiling " __FILE__) 
#pragma message("Last modified on " __TIMESTAMP__) 

#pragma message("") 

// with line number 
#define STRING2(x) #x 
#define STRING(x) STRING2(x) 

#pragma message (__FILE__ "[" STRING(__LINE__) "]: test") 

#pragma message("") 
+0

धन्यवाद - इसे अपडेट किया है और इसे कॉपी किया है - मुझे लगता है कि यह वही पृष्ठ है, लेकिन यह थोड़ी देर पहले था! – noelicus

0

मुझे लगता है कि यह काम करना चाहिए

void foo() __attribute__ ((deprecated("This function is deprecated. \nFor further information please refer to the README"))); 
संबंधित मुद्दे