हाँ, वहाँ एक चाल आप याद कर रहे हैं है: आप -std=gnu99
बजाय -std=c99
उपयोग कर सकते हैं।
-std=c99
#define
रों __STRICT_ANSI__
, जो /usr/include/features.h
"डिफ़ॉल्ट रूप से सी मानक के बाहर कुछ भी करने के लिए सक्षम नहीं है" के रूप में व्याख्या (इसके बिना, आप कम से कम _SVID_SOURCE
और _BSD_SOURCE
दोनों मिल)। -std=gnu99
, दूसरी ओर, "सी 99 प्लस जीएनयू एक्सटेंशन" का अर्थ है (जीसीसी डिफ़ॉल्ट वर्तमान में -std=gnu89
है, इसका सी 8 9 समकक्ष है, यही कारण है कि आपको नई सी 99 सुविधाओं को प्राप्त करने के लिए कुछ निर्दिष्ट करने की आवश्यकता है)।
वैकल्पिक रूप से, आप सुविधा परीक्षण मैक्रोज़ सक्षम कर सकते हैं (जैसा कि @ litb के उत्तर में उल्लिखित है)। मेरे सिस्टम में /usr/include/stdlib.h
पर देखकर, यह __USE_SVID
, __USE_XOPEN_EXTENDED
, या __USE_BSD
में से एक की अपेक्षा करता है। /usr/include/features.h
मुझसे कहता है कि सुविधा परीक्षण मैक्रो जो इन सक्षम होगा हैं:
_SVID_SOURCE
(सक्षम बनाता है __USE_SVID
)
_BSD_SOURCE
(सक्षम बनाता है __USE_BSD
)
_XOPEN_SOURCE
कम से कम 500
के एक मूल्य के साथ (सक्षम बनाता है __USE_XOPEN_EXTENDED
)
_XOPEN_SOURCE_EXTENDED
(__USE_XOPEN_EXTENDED
भी सक्षम करता है)
_GNU_SOURCE
दोनों -std=gnu99
और -D_GNU_SOURCE
है एक अच्छा विचार का उपयोग कर (सब कुछ सक्षम बनाता है, ऊपर चार फीचर परीक्षण मैक्रो सहित)
नए कार्यक्रमों जहाँ आप भविष्य मानकों से नए कार्यों के साथ संभावित नाम टकराव के बारे में भी चिंतित नहीं हैं,।यह आपको सभी नई मानक सुविधाओं और जीएनयू एक्सटेंशन का उपयोग करने की अनुमति देता है, जो कुछ प्रकार के फ़ॉलबैक के साथ संयुक्त होते हैं (उदाहरण के लिए, autoconf
-स्टाइल फीचर टेस्ट) सबसे लचीलापन देता है।
संदर्भ:
मैं नीचे सही हेडर के बाद से इस प्रतिक्रिया वोट करने के लिए शामिल किया गया था (दोनों stdlib और गणित)। यह चाल मैक्रो को परिभाषित कर रही थी। जवाब के लिए धन्यवाद! – SetJmp
मैंने नहीं देखा कि आपने गणित का उल्लेख किया था। – dirkgently
कुल सी नोब के रूप में, मैंने कम से कम 'srand' के उल्लेख की सराहना की। धन्यवाद! – jocull