क्या जीसीसी को स्रोत कोड संकलित करना और __FILE__
, __LINE__
इत्यादि जैसे मैक्रोज़ को अनदेखा करना संभव है, या उन्हें फिर से कहने के लिए फिर से परिभाषित करें - एक खाली स्ट्रिंग?जीसीसी मानक पूर्वनिर्धारित मैक्रोज़ को अनदेखा या पुन: परिभाषित करना
उत्तर
किसी भी मैक्रो के साथ के रूप में आप सिर्फ उपयोग कर सकते हैं:
#undef __LINE__
#undef __FILE__
और उसके बाद आप उन्हें फिर से परिभाषित कर सकते हैं।
gcc
विकल्पों में मैक्रो नाम को परिभाषित करने के लिए आप मैक्रो नाम और -D macroname=definition
को अपनाने के लिए -U macroname
भी पास कर सकते हैं।
ध्यान दें कि, जैसा कि किसी अन्य उत्तर में इंगित किया गया है, __LINE__
या __FILE__
को अपरिभाषित या फिर से परिभाषित करने के लिए अपरिभाषित व्यवहार का आह्वान करता है।
मुझे संदेह है कि यूबी को इतना उत्तेजित करता है। कृपया इस पर मेरा जवाब देखें। – alk
@alk सहमत हैं, यह करता है। – ouah
@alk लेकिन मुझे लगता है कि प्रासंगिक उद्धरण यह है: * (c99, 6.10.8p4) "इनमें से कोई भी मैक्रो नाम नहीं, और न ही पहचानकर्ता परिभाषित किया गया है, # परिभाषा या #undef प्रीप्रोकैसिंग निर्देश का विषय होगा। * – ouah
- 1. फ़ंक्शन नाम के लिए पूर्वनिर्धारित मैक्रोज़ __func__
- 2. कार्यान्वयन-परिभाषित मैक्रोज़
- 3. जीसीसी: मानक को अनदेखा कैसे करें पथ शामिल हैं?
- 4. बिल्ट-इन फ़ंक्शन को पुन: परिभाषित करना
- 5. वैराडिक मैक्रोज़ गैर मानक हैं?
- 6. जीसीसी मानक अनुकूलन व्यवहार
- 7. अपवादों को अनदेखा करना
- 8. मानक लाइब्रेरी कंटेनर जीसीसी
- 9. जीसीसी एनडीईबीयूजी को कब परिभाषित करता है?
- 10. एलएलवीएम-जीसीसी या जीसीसी
- 11. "पसंदीदा" या "मैक्रोज़"?
- 12. क्रॉस संकलन: जीसीसी अनदेखा --sysroot
- 13. मैक्रोज़
- 14. नाशपाती मानक अनदेखा लाइन इंडेंट
- 15. मैक्रोज़
- 16. "पूर्वनिर्धारित प्रकार सिस्टम। वैल्यूप्पल को परिभाषित या आयात नहीं किया गया है" .NET 4.7
- 17. मैं एक्सकोड 4 में प्रीप्रोसेसर मैक्रोज़ को कैसे परिभाषित करूं?
- 18. पायथन: क्या मानक वाक्यविन्यास का उपयोग करके कक्षा को पुन: सक्षम करना संभव है?
- 19. मैक्रोज़
- 20. लक्ष्य प्रीप्रोसेसर मैक्रोज़ को एक्सकोड
- 21. ")" के बाद फ़ंक्शन के तर्क प्रकार को परिभाषित करना, क्या यह एक बहुत पुराना मानक है?
- 22. क्या मैं सी कोड के संकलन के दौरान परिभाषित मैक्रोज़ देख सकता हूं?
- 23. सिस्टम कॉल को अनदेखा करना
- 24. जैस्मीन: क्यों पूर्वनिर्धारित और नहीं। परिभाषित करने के लिए?
- 25. # परिभाषित या कॉन्स स्ट्रिंग *
- 26. क्या मै मैक्रोज़ को परिभाषित करने वाले मैक्रो को परिभाषित कर सकता हूं?
- 27. को परिभाषित करना चयनकर्ताओं
- 28. मैक्रोज़
- 29. जीसीसी
- 30. PHPUnit चीजों को अनदेखा करना?
वास्तव में एक बुरा विचार है, आप ऐसा क्यों चाहते हैं? बहुत सारे कोड (सिस्टम हेडर समेत) सही चीज़ करने के लिए इन पर निर्भर करेगा। यह सिर्फ परेशानी की तलाश में है। –
आप ऐसा क्यों करना चाहते हैं? क्योंकि: 1. सी मानक उन्हें फिर से परिभाषित/अपरिभाषित करने पर रोक लगाता है। '__LINE__' को' 0' या '-1' के साथ बदलना अजीब लगेगा (यह एक पूर्णांक मान है और आपको' __FILE__' के लिए खाली स्ट्रिंग के विपरीत कुछ देना होगा) 3. उनका प्राथमिक उद्देश्य * डीबग में मदद करने के लिए * है (यदि आप उन्हें नहीं चाहते हैं, तो उन्हें पहले स्थान पर क्यों उपयोग करें?)। तो ऐसा लगता है कि अगर आप उन्हें नहीं चाहते हैं या उन्हें बेहतर रखना चाहते हैं तो अपना कोड दोबारा लिखना एकमात्र तरीका है! –