एक समीक्षा के दौरान मैं निम्नलिखित की तरह कोड का एक टुकड़ा भर में आया था? क्या स्थिति ठीक से निष्पादित होगी?#if परिभाषित (x) || (वाई); क्या यह मान्य है?</p> <pre><code>#if defined(x) || y </code></pre> <p>उपरोक्त कथन का क्या मतलब है:
उत्तर
हाँ यह मान्य है।
यहाँ है मानक (C99) 6.10p1 में क्या कहते हैं:
if-group:
# if constant-expression new-line groupopt
# ifdef identifier new-line groupopt
# ifndef identifier new-line groupopt
defined
ऑपरेटर एक निरंतर अभिव्यक्ति (6.10.1p1) की एकल ऑपरेटर हिस्से के रूप में देखा जाता है।
अपने उदाहरण में, हालत सच के रूप में मूल्यांकन किया जाता है, तो मैक्रो x
परिभाषित किया गया है या अगर y
से 0
हां, चूंकि defined(x)
एक बूलियन है और सत्य या गलत लौटाता है।
उपरोक्त कथन का अर्थ है "या तो x परिभाषित किया गया है या y सत्य है"।
... या दोनों है। :) – phimuemue
परिभाषित और अलग है इस के लिए तर्क दुगना है।
बजाय एक#ifdef
का उपयोग करने का
, आप, defined
ऑपरेटर का उपयोग ताकि आप इसे (&&
, ||
, आदि) पर तार्किक ऑपरेटरों का उपयोग कर सकते हैं, ताकि आप अपने कोड नकल करने इतना है कि यह ठीक से शामिल किया गया है की जरूरत नहीं है यदि आपको परिभाषित करने की आवश्यकता के लिए कई मानदंड हैं।
इसके अलावा, मेरी राय में, मैं इसे बहुत आसान #ifdef x
से #if defined(x)
के रूप में पढ़ने के लिए मिल जाए, और जबकि कि #ifdef
साथ संभव नहीं है तो आपको निम्न #if defined(x) && defined(y)
कर सकता है,।
यह सही है लेकिन यह एक बुरा अभ्यास है। एक सशर्त में दो अलग-अलग मूल्यांकन ('वाई' और 'परिभाषित (एक्स)' का उपयोग क्यों करें। यह दूसरों के लिए भ्रमित हो सकता है। नीचे दिया गया उदाहरण || का अधिक सामान्य उपयोग दिखाता है और #defined मैक्रो के खिलाफ & & operatiors:
#define AA 1
#define BB 2
#if (defined AA) || (defined BB)
#warning "A or B"
#endif
#if (defined AA) && (defined BB)
#warning "A and B"
#endif
जब ऊपर कोड चलाया गया था उपयोगकर्ता स्क्रीन पर इन संदेशों को मिलेगा:
#warning "A or B"
#warning "A and B"
लेकिन कोड (एए अपरिभाषित था) इस तरह था, तो:
#undefine AA
#define BB 2
#if (defined AA) || (defined BB)
#warning "A or B"
#endif
#if (defined AA) && (defined BB)
#warning "A and B"
#endif
तो उपयोगकर्ता यह संदेश प्राप्त होगा:
#warning "A or B"
ध्यान दें कि आपके द्वारा यहां उपयोग किया गया वाक्यविन्यास अलग है: "परिभाषित एक्स" के बजाय "परिभाषित एक्स"। दोनों एक ही परिणाम पैदा करते हैं। – StarShine
- 1. PHP क्या <<< मतलब है?
- 2. <% $, <% @, <% =, <% # ... सौदा क्या है?
- 3. कक्षा << आत्म मतलब क्या है?
- 4. चींटी (1.6.5) - एक <condition> या <if>
- 5. <> मतलब क्या है?
- 6. PHP में <<< ईओडी का उपयोग क्या है?
- 7. "<<<" ऑपरेटर का नाम क्या है?
- 8. क्या करता है | और << मतलब है?
- 9. << पायथन में क्या करता है?
- 10. रुबी में @@ मतलब क्या है?</p> <pre><code>@@autoloads = {} </code></pre> <p>क्या <code>@@</code> रूबी में मतलब है:
- 11. PHP में, "<<<" क्या दर्शाता है?
- 12. ConfigParser के साथ नई लाइनें?</p> <pre><code><br> [ section one ]<br> one = Y,Z,X <br><br> [EG 2]<br> ias = X,Y,Z<br> </code></pre> <p>मेरे कार्यक्रम ठीक पढ़ने और इन मूल्यों प्रसंस्करण काम करता है:
- 13. "ऑपरेटर <<" क्या कहा जाता है?
- 14. क्या पाइथन में `if bool (x)` और `if x` के बीच कोई अंतर है?</p> <pre><code>if bool(x): doSomething </code></pre> <p>मुझे लगता है कि निम्नलिखित एक ही काम करते हैं:
- 15. गतिशील अभिव्यक्ति बनाना <Func<T,Y>>
- 16. 'ऑपरेटर <<' के लिए 'std :: cout <<' में अस्पष्ट अधिभार <<
- 17. unordered_set <context_wrapper <Ty>> मान्य है?
- 18. जावास्क्रिप्ट में अगर कथन के बिना "अपरिभाषित" संपत्ति से कैसे बचें?</p> <pre><code>var x = { y: { z: { a:true } } } </code></pre> <p>और कहीं कोड में:
- 19. << ऑपरेटर और प्रत्यावर्तन
- 20. >>>>,> |, ||, | <, <, <<
- 21. खोल में "<<(cmd args)" का अर्थ क्या है?
- 22. का अर्थ << = और | =
- 23. <% "का अर्थ क्या है: <% = और <% = में क्या अंतर है?
- 24. कैसे बचें << - असाइन
- 25. रेल में "वर्ग << स्वयं" का अर्थ क्या है?
- 26. क्या <> VB.net
- 27. मेकफ़ाइल प्रतीकों $ @ और $ <मतलब क्या है?
- 28. '<? =' PHP में क्या मतलब है?
- 29. क्या <tr><tbody>
- 30. [ऑब्जेक्ट ऑब्जेक्ट] का क्या अर्थ है?</p> <pre><code>[object Object] </code></pre> <p>क्या यह वास्तव में क्या मतलब है: (जावास्क्रिप्ट)
* निष्पादन * सही शब्द नहीं है। वह कोड संकलन समय पर preprocessed है। मुझे वाक्यविन्यास की शुद्धता के बारे में निश्चित नहीं है, लेकिन यह अधिकतर * मूल्यांकन * प्राप्त हो सकता है लेकिन आमतौर पर "#if परिभाषित (x)" का सही वाक्यविन्यास "#IFDEF x" –