, मैं वहां a
छोड़ देता हूं। जब मैं संकलित करने के लिए चला गया, संकलक सूचना:int int, f() {} संकलित होना चाहिए? एक टाइपो के लिए
missing a ',' between declaration of 'a' and 'f'
कोड:
int a
f(void)
{
}
और चूंकि मैं इस तरह किसी भी त्रुटि संदेश कभी नहीं मिल है और मैं नहीं जानता था कि मैं डाल सकता है बहुत surpresing था वहाँ एक अल्पविराम और यह सिर्फ ठीक संकलित (एक से अधिक संकलक मैं परीक्षण किया में):
int a,
f(void)
{
}
लेकिन निश्चित रूप से यह मेरा इरादा लेकिन बजाय int f(void){}
नहीं था। मैं एक और compilers में आजमाइए लेकिन यह इस तरह काम नहीं किया और सूचना एक सिंटैक्स त्रुटि (बजना में):
error: expected ';' after top level declarator.
मेरे सवाल यह है: जो एक सही है? इसे संकलित करना चाहिए या नहीं करना चाहिए? उस व्यवहार के बारे में मानक क्या कहता है?
मैं इसका उपयोग नहीं कर रहा हूं क्योंकि यह चरम और कार्यों को अल्पविराम से विभाजित करने के लिए थोड़ा बदसूरत है (जैसे यह फ़ंक्शन प्रोटोटाइप के लिए है)। मैं सिर्फ उत्सुक हूँ।
संपादित करें: फ़ंक्शन पैरामीटर में void
जोड़ा गया। असल में मैं खाली मानकों के साथ एक समारोह में लिखने के लिए
पूर्व _seems_ मान्य C89 होने के बाद, और बाद वाला अमान्य देखें। सी 99 के लिए, मुझे पूरा यकीन है कि दोनों अमान्य हैं (और जीसीसी '-std = c99 -pedantic' के साथ संकलित करने से इंकार कर देता है)। 'int a, f();' (उत्तरार्द्ध एक फ़ंक्शन घोषणा (परिभाषा के बिना 'int' लौटने वाले तर्कों की अनिर्दिष्ट संख्या लेना) कार्य करता है) हालांकि, वैध सी 99 होगा। आप किस मानक में रूचि रखते हैं? – mafso
जानना अच्छा है, मैं अपनी टिप्पणी हटा दूंगा, क्योंकि वास्तव में इसका मतलब यह नहीं है कि आपके द्वारा किए गए किसी भी काम से अधिक है, लेकिन किसी भी तरह से फिर से पढ़ने में, आपने इसे अधिक स्पष्ट रूप से कहा है। –
ने भी मेरा हटा दिया – Jack