5

का उपयोग करते समय #if TRUE जैसे किसी कथन का उपयोग करते समय, मुझे क्या होने की उम्मीद करनी चाहिए? एक स्पष्टीकरण की सराहना की जाएगी! मैं समझता हूं कि कैसे #if 1 काम करता है, लेकिन यह #if TRUE का उपयोग करने से मेरे कोड में एक पूरी तरह से अलग परिणाम देता है। मैं समझता हूं #if एक सशर्त निर्देश है, और इसका क्या अर्थ है; यह सिर्फ TRUE (या FALSE) भाग है जिसे मैं समझ नहीं पा रहा हूं। ऐसा लगता है कि इस तरह से इसका उपयोग कथन के बाद कभी भी कोड निष्पादित नहीं करता है। यहाँ एक उदाहरण है:सी ++, #if TRUE सशर्त निर्देश

#if TRUE 
    cout << "true" << endl; 
#endif 

#if FALSE 
    cout << "false" << endl; 
#endif 

मैं देखना "सही" या "गलत" स्क्रीन पर मुद्रित और दृश्य स्टूडियो का उपयोग कर लगता है कभी नहीं, भीतर बयान स्वचालित रूप से धूसर हो जाता है।

+0

यदि आप मैक्रोज़ घोषित किए गए हैं तो आप बस परीक्षण करें। आमतौर पर WinDef.h में उन्हें बूल के साथ उपयोग करने की घोषणा की जाती है। –

+0

क्या "सत्य" आरक्षित शब्द नहीं है? – Hieli

+2

नहीं, यह केवल एक मैक्रो है जिसे #Dfine WinDef.h जीतने के साथ घोषित किया गया है (http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx देखें)। आरक्षित शब्द "सत्य" (निचला मामला) है। –

उत्तर

5

प्रीप्रोसेसर #if #endif ब्लॉक की सामग्री को शामिल/बहिष्कृत करेगा #if के बाद अभिव्यक्ति को गीला करने के आधार पर सत्य या गलत का मूल्यांकन करता है।

#if TRUE केवल करने के लिए अगर सही है

  • मैक्रो TRUE परिभाषित किया गया है
  • TRUE का मूल्य! मूल्यांकन करेंगे = 0

अपने उदाहरण न TRUE है और न ही FALSE में तो दोनों ब्लॉक परिभाषित कर रहे हैं झूठे और बहिष्कृत हैं।

+0

बहुत बहुत धन्यवाद! यह बहुत उपयोगी था। – Hieli

0

देखने के लिए true या false मुद्रित आप उन्हें परिभाषित करने की जरूरत:

#define TRUE 1 
#define FALSE 1 

अब #if TRUE और #if FALSE#if 1 के रूप में ही किया जाएगा।

+1

मुझे लगता है कि पहली बार मैंने कभी भी 'FALSE' को 1 के रूप में परिभाषित किया है ... – FatalError

+0

FALSE को 0 –

+0

के रूप में परिभाषित करने के उत्तर को संशोधित किया गया है लेकिन उसके बाद कथन नहीं है लंबा सच;)। – FatalError

4

TRUE और FALSEमैक्रो Windows में हैं, लेकिन WinDef.h में घोषित कर दिया।

यदि आप हेडर शामिल करते हैं, तो आप देखेंगे कि TRUE1 और FALSE0 है। तो, पहला कथन निष्पादित करना चाहिए, दूसरा नहीं होना चाहिए।

यदि आप हेडर शामिल नहीं करते हैं, तो दोनों को अपरिभाषित किया जाएगा, और इनमें से कोई भी कथन निष्पादित नहीं किया जाएगा।

+0

बहुत सराहना की! धन्यवाद! – Hieli

संबंधित मुद्दे