2009-06-16 13 views
8

मैं सी ++ कोड संकलित कर रहा हूं और मैं -पीडेंटिक विकल्प को सक्षम करना चाहता हूं।
मै मैक ओएस एक्स तेंदुए पर एक्सकोड चलाने, जीसीसी 4.0 का उपयोग कर रहा हूं।
उदाहरण के लिए यह वैरैडिक मैक्रोज़ और long long प्रकार को अनुमति देने के लिए संभव है जो सामान्य रूप से उपयोग किए जाने पर प्रतिबंधित होते हैं - साथ-साथ -Wno-variadic-macros और -no-long-long)। लेकिन मुझे चेतावनी सूची "चेतावनी के अंत में" अल्पविराम को अक्षम करने के लिए कुछ भी नहीं मिला।
क्या यह संभव है?
जीसीसी: क्या -पैंटिक का उपयोग करते समय "गणनाकर्ता सूची के अंत में" अल्पविराम को अक्षम करना संभव है?

धन्यवाद।

उत्तर

4

एक प्रगणक के अंत में एक अल्पविराम C99 में मान्य है, लेकिन नहीं C89 में, तो निम्नलिखित उपलब्ध कराने के अपने कोड मान्य है C99

gcc -std=c99 -pedantic foo.c 

काम करेंगे मैं काफी यकीन है कि यह सी में मान्य नहीं है हूँ ++ सभी

संपादित करें पर (छ ++ के अनुसार): HP-UX पर जीसीसी 4.2.1 के साथ इस परीक्षण किया है और यह कोई त्रुटि/चेतावनी के साथ foo.c

int main(int argc, char** argv) { 
    enum { A, B, }; 
    return 0; 
} 


gcc -std=c99 -pedantic foo.c 
+1

दरअसल, मुझे चेतावनी मिलती है जब "-std = c89" का उपयोग किया जाता है। कोई चेतावनी नहीं है जब "-std = 99" का उपयोग किया जाता है। लेकिन अगर मैं foo.c को foo.cpp में बदलता हूं तो मुझे एक त्रुटि मिलती है। यह मेरी समस्या है ... – Guillaume

+2

यदि यह एक .c फ़ाइल है तो जीसीसी एक सी संकलक का उपयोग करता है। यदि यह एक .cc या .cpp फ़ाइल है GCC एक C++ कंपाइलर का उपयोग करता है। आपका कोड कानूनी सी ++ नहीं है, इसलिए त्रुटि। – Glen

2

काम करता है C++ में यह है इसे अक्षम करने के लिए अभी तक संभव नहीं है, भले ही यह C++ 11 में कानूनी है। तो भविष्य में, जब जीसीसी को सही किया जाता है, -std = C++ 11 इसे अक्षम करना चाहिए।

-std = c99 केवल सी में काम करता है, सी ++ (प्रश्न में नहीं)।

+0

ऐसा लगता है कि अब तय किया गया है: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51888 – StellarVortex

संबंधित मुद्दे

 संबंधित मुद्दे