2010-01-23 13 views
6

मैं लिनक्सC89 और C99 के साथ संकलन C99 के लिए जीसीसी 4.4.2 डिफ़ॉल्ट करता है?

पर जीसीसी 4.4.2 का उपयोग कर रहा हूं, मुझे आश्चर्य है कि जीसीसी स्वचालित रूप से सी 99 के साथ नवीनतम मानक के रूप में संकलित करने के लिए डिफ़ॉल्ट रूप से डिफ़ॉल्ट है?

अगर मैं C89 या c99 साथ संकलित करने के लिए चाहते हैं मैं यह कैसे निर्दिष्ट कर सकते हैं? क्योंकि इस मानक पूरी तरह से अभी तक संकलक में लागू नहीं किया गया

किसी भी सलाह के लिए बहुत धन्यवाद,

+2

डिफ़ॉल्ट अब भी है gnu89 (अर्थात जीएनयू एक्सटेंशन के साथ C89)। –

उत्तर

9

एक कारण यह डिफ़ॉल्ट रूप से C99 उपयोग करने के लिए नहीं है। हालांकि, मेरा मानना ​​है कि जब जीसीसी संकलन आप डिफ़ॉल्ट मोड सेट कर सकते हैं कि, इसलिए यदि मानकों के चुनाव वास्तव में आप के लिए मायने रखती है, यह विकल्प पारित करने के लिए हमेशा बेहतर है।

विकल्पों -std=c99 और -std=c89 क्रमशः रहे हैं।

+0

मैं आमतौर पर c89 के साथ इसके अधिक पोर्टेबल के रूप में संकलित करता हूं। लेकिन सी 99 की कुछ विशेषताएं हैं जिन्हें मैं पसंद करता हूं। हालांकि, मैं c99 मानक का उपयोग नहीं कर सकता क्योंकि मुझे वीएस का उपयोग करके विंडोज़ पर संकलन करने की आवश्यकता है, जो केवल c89 का समर्थन करता है। वीएस 2010 का नवीनतम संस्करण भी सी 8 9 लागू नहीं करेगा। – ant2009

+0

अगर मैं जाँच [जीसीसी C99status] (https://gcc.gnu.org/c99status.html) मैं किसी भी याद आ रही सुविधाओं है कि सबसे अधिक उपयोग के मामलों को प्रभावित करती है नहीं मिल रहा। क्या आप एक लापता फीचर का उदाहरण दे सकते हैं जो सी 99 संकलन का उपयोग करने के लिए अवरुद्ध हो सकता है? –

+0

@RuudAlthuizen कि इस सवाल का जवाब 2016 के रूप में 2010 में लिखा गया था मेरी जानकारी के अनुसार,, फ्लोटिंग प्वाइंट का केवल विशेषज्ञ पहलुओं याद कर रहे हैं। " में फ्लोटिंग-पॉइंट पर्यावरण पहुंच" को "लाइब्रेरी सुविधा, कोई कंपाइलर समर्थन आवश्यक" के रूप में चिह्नित नहीं किया गया है, लेकिन असल में यह ** निश्चित रूप से ** को संकलक समर्थन की आवश्यकता है, जो जीसीसी प्रदान नहीं करता है। –

9
gcc(1) आदमी पृष्ठ से

:

-std= 
     Determine the language standard. This option is currently only 
     supported when compiling C or C++. 

.... 

     c99 
     c9x 
     iso9899:1999 
     iso9899:199x 
      ISO C99. Note that this standard is not yet fully supported; 
      see <http://gcc.gnu.org/gcc-4.4/c99status.html> for more 
      information. The names c9x and iso9899:199x are deprecated. 

     gnu89 
      GNU dialect of ISO C90 (including some C99 features). This is 
      the default for C code. 

     gnu99 
     gnu9x 
      GNU dialect of ISO C99. When ISO C99 is fully implemented in 
      GCC, this will become the default. The name gnu9x is 
      deprecated. 
संबंधित मुद्दे