का उपयोग std
के बिना g ++ 4.6.1 के साथ फ़ंक्शन, कोई चेतावनी या त्रुटि नहीं दी जाती है।abs के साथ कंपाइलर समस्याओं से बचें()
#include <algorithm>
#include <cmath>
double foobar(double a)
{
return abs(a);
}
++ algorithm
से शामिल हैं में से एक के माध्यम से ग्लोबल नेम स्पेस में abs()
की double
संस्करण में खींच किया जा रहा है जी के इस संस्करण में। ऐसा लगता है कि अब इसे मानक द्वारा अनुमति दी गई है (यह question देखें), लेकिन आवश्यक नहीं है।
अगर मैं एक संकलक है कि वैश्विक नाम स्थान (जैसे जी ++ के रूप में 4.2) में abs()
की double
संस्करण खींच नहीं करता है का उपयोग करके उपरोक्त कोड संकलन है, तो निम्न त्रुटि रिपोर्ट की जाती है:
warning: passing 'double' for argument 1 to 'int abs(int)'
मैं कैसे कर सकता है ताकि मैं त्रुटियों जब अन्य compilers के साथ प्रयोग किया रोका जा सकता है बल जी ++ 4.6.1, और अन्य compilers कि ग्लोबल नेम स्पेस में कार्यों खींच, एक चेतावनी देने के लिए?
क्या 'का उपयोग कर std :: abs' कि अगर समारोह आप की जरूरत है क्या बुराई है? –
@JonathanLeffler कुछ भी नहीं है, लेकिन यह गलती से बाहर याद आती है करने के लिए आसान हो सकता है। मैं नहीं चाहता कि पर्ची ज्ञात हो और अन्य कंपाइलरों के साथ संकलन के मुद्दों का कारण बन जाए। –