इस समस्या को ठीक करने का प्रयास कर रहा है: C++ How can I prevent my team developers from using integer version of abs by mistake? मैक्रो का उपयोग करके abs
फ़ंक्शन अब उपयोग करने योग्य नहीं है।प्रीप्रोसेसर स्टेटमेंट का उपयोग करके मानक फ़ंक्शन को वर्जित नहीं किया जा सकता है?
अगर मैं जी के साथ myabs(3);
युक्त एक कोड ++ विकल्प -Dmyabs=abs
यह संकलित (myabs
abs
द्वारा प्रतिस्थापित किया जा) संकलन है, ठीक है।
अब, अगर मैं जी के साथ abs(3);
युक्त एक कोड ++ विकल्प -Dabs=forbidden
यह भी संकलित ... कारण है कि यह रिपोर्ट नहीं करता कि forbidden
अज्ञात है संकलन? ऐसा लगता है कि abs
को प्री-प्रोसेसिंग के दौरान forbidden
द्वारा प्रतिस्थापित नहीं किया गया है ... क्यों?
यदि इसमें गार्ड शामिल हैं, तो इसमें शामिल हैं, आप शामिल किए गए सेमीथ कंपाइलर तर्क के साथ इसके समावेश को मजबूर कर सकते हैं, फिर पेट मैक्रो (अनचाहे) – matt
को परिभाषित करें अच्छा जवाब: 'गणित' को शामिल करने से पहले 'abs' को' वर्जित 'द्वारा प्रतिस्थापित किया गया है, इसके बाद नहीं, इसलिए किसी को '#undef abs' करना होगा – jpo38