2010-02-08 10 views
26

मैं एक प्रोग्राम को संकलित करने के लिए gcc (उबंटू 4.4.1-4ubuntu9) का उपयोग कर रहा हूं, लेकिन जब भी यह मेरे कोड में // टिप्पणी देखता है, तो यह उल्टी लगता है:मैं अपने सी कोड में // शैली सेटिंग्स का उपयोग क्यों नहीं कर सकता?

interface.c :##: error: expected expression before â/â token< 

क्या करता है gcc संकलन मोड मैं // टिप्पणियों को मना कर रहा हूँ?

$ gcc -g -ansi -pedantic interface.c structs.h -c -I. -I/home/me/project/h 

क्यों?

+3

यह जानना महत्वपूर्ण है कि "एएनएसआई सी" शब्द आमतौर पर (और * गलत * *) 1 9 8 9 एएनएसआई सी मानक द्वारा वर्णित भाषा को संदर्भित करता है। उस मानक को 1 99 0 आईएसओ सी मानक (जो एक ही भाषा का वर्णन करता है) द्वारा प्रतिस्थापित किया गया था, और तब से 1 999 और 2011 आईएसओ सी मानकों द्वारा अधिग्रहित किया गया है। एएनएसआई ने प्रकाशित होने के बाद आधिकारिक तौर पर सभी तीन आईएसओ सी मानकों को अपनाया। तो कड़ाई से बोलते हुए, "एएनएसआई सी" आईएसओ सी 2011 को संदर्भित करता है - जिसे "आईएसओ सी" कहा जाता है। पुराने मानकों को अभी भी प्रासंगिक हो सकता है, लेकिन साल के अनुसार उन्हें संदर्भित करना स्पष्ट है (सी 8 9/सी 0 9, सी 99, सी 11)। –

उत्तर

62

// टिप्पणियां वर्ष (पूर्व 99) सी के संस्करणों में की अनुमति नहीं है, /**/ का उपयोग

+1

लघु, सटीक और बिंदु पर। अब तक का सबसे अच्छा जवाब, और संभवतः सबसे अच्छा कल्पना योग्य। –

+2

'-ansi' के बिना, जीसीसी वर्तमान में जीएनयू-विशिष्ट एक्सटेंशन के साथ सी 8 9 का समर्थन करता है; उनमें से एक एक्सटेंशन '//' टिप्पणियां होती है। '-std = c99' के साथ, यह 1 999 आईएसओ सी मानक के अनुरूप होने का प्रयास करता है, जिसके लिए' // 'टिप्पणियों के लिए समर्थन की आवश्यकता होती है। –

3

// टिप्पणी वास्तव में मूल में एक सी ++ सुविधा, कर रहे हैं (या -ansi निकालने के लिए, कि C89 मानक के लिए एक पर्याय है) जो यही कारण है कि -ansi उन्हें अक्षम करता है।

+9

पिछले 10 वर्षों से वे वैध सी भी हैं। –

+0

हाँ। मेरे व्यक्तित्व को व्यक्त करने के लिए संपादित किया गया। – chaos

+3

वे वास्तव में सी के दूरी पूर्वजों में से एक, बीसीपीएल में पैदा हुए। सी ++ ने उन्हें शुरुआत से अपनाया; सी 1 999 तक नहीं था। –

20

जीएनयू कंपाइलर दस्तावेज़ में C++ comments देखें।

जीएनयू सी में, आप सी ++ स्टाइल टिप्पणियों का उपयोग कर सकते हैं, जो // से शुरू होते हैं और लाइन के अंत तक जारी रहते हैं। कई अन्य सी कार्यान्वयन ऐसी टिप्पणियों की अनुमति देते हैं, और वे 1 999 सी मानक में शामिल हैं। हालांकि, यदि आप C99, या -ansi (-std=c89 के बराबर) से पहले आईएसओ सी के संस्करण को निर्दिष्ट करते हुए -std विकल्प निर्दिष्ट करते हैं तो C++ शैली टिप्पणियां पहचानी नहीं जाती हैं।

(जोर मेरा है क्योंकि कुछ पदों का दावा है कि मानक सी में // की अनुमति नहीं है जबकि यह केवल 99-मानकों के लिए सच है)।

+3

हम में से कुछ के लिए, "मानक सी" को '99 से पहले लंबे समय से मानकीकृत किया गया था। मानक के सही संशोधन को निर्दिष्ट करने के लिए हमेशा बुद्धिमान! :-) –

+1

@ ब्रायन: तो ... हमें जो चाहिए वह मानक है ... मानक। – Amy

+0

अधिकतर उपयोगकर्ताओं को जो क्रॉस प्लेटफ़ॉर्म सामग्री के बारे में चिंता करने की ज़रूरत नहीं है, वे शायद '-std = gnu99' के साथ खुश होंगे – nolandda

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