क्या कोई अच्छा कारण है कि यह प्रोग्राम -ansi
और -pedantic
झंडे के साथ भी जीसीसी के तहत संकलित करता है?जीसीसी एसी और पैडेंटिक झंडे के साथ भी सी ++ में गोल() के उपयोग की अनुमति क्यों देता है?
#include <cmath>
int main (int argc, char *argv [])
{
double x = 0.5;
return static_cast<int>(round(x));
}
यह g++ -ansi -pedantic -Wall test.cpp -o test
के साथ स्वच्छ (कोई चेतावनी, यहां तक कि) संकलित करता है।
मैं दो समस्याओं को देखने:
round()
नहीं आईएसओ अनुरूप मोड में सी ++ के लिए उपलब्ध होना चाहिए (क्योंकि यह C99 से आता है)- यहां तक कि अगर
round()
इस मामले में उपलब्ध थे, यह केवल चाहिएstd
नामस्थान से
क्या मैं गलत हूं?
जीसीसी के लिए मैन पेज कहता है कि कुछ फ़ंक्शन को परिभाषित नहीं किया जाएगा जब ansi ध्वज सेट किया गया है, लेकिन यह नहीं कि केवल ansi फ़ंक्शंस को परिभाषित किया जाएगा – josefx
@josefx: डी। शॉली को मेरी टिप्पणियां देखें। अधिक जांच करने के बाद, मैंने सीखा है कि पुस्तकालय एक्सटेंशन "अच्छी तरह से गठित कार्यक्रमों के व्यवहार को बदल नहीं सकते"। तो मुझे ऐसा लगता है कि लाइब्रेरी में 'राउंड()' एक्सटेंशन जोड़ना अवैध होगा, जो '-ansi' ध्वज moot का व्यवहार करता है। –