2016-05-17 3 views
5

मैं अपने कोड में एक पंक्ति है कि इस तरह दिखता है। हालांकि, यह सोलारिस पर विफल रहता है, क्योंकि आधिकारिक वाक्यविन्यास # ifndef identifier new-line groupopt है और पहचानकर्ताओं में कोष्ठक की अनुमति नहीं है।कैसे जांचें कि फ़ंक्शन-जैसी मैक्रो परिभाषित की गई है या नहीं?</p> <pre><code>#ifndef MACRO(n) </code></pre> <p>यह वास्तव में सबसे compilers पर ठीक काम करता है:

यह मैक्रो परिभाषित करने के लिए सही तरीका क्या है?

+0

स्पष्टीकरण के लिए। 'Ifdef मैक्रो' के माध्यम से, आप पहले से ही जानते हैं कि यह कैसे परिभाषित किया जाए या नहीं। आप विशेष रूप से जानना चाहते हैं कि यह एक * फ़ंक्शन * मैक्रो है? –

उत्तर

7

आप (n) की जरूरत है, अगर आप इसका इस्तेमाल वास्तव में जीसीसी शिकायत न:

warning: extra tokens at end of #ifndef directive 

इस वजह से #ifndef एक पहचानकर्ता नहीं अभिव्यक्ति की उम्मीद है, (n) शायद पूर्वप्रक्रमक द्वारा नजरअंदाज कर दिया है

यह बस के लिए पर्याप्त होना चाहिए मैक्रो परिभाषा नाम के साथ जांचें:

#ifndef MACRO 
संबंधित मुद्दे