त्वरित उत्तर: यह निर्दिष्ट int testlib()
करने के int testlib(void)
लिए परिवर्तन कि फ़ंक्शन कोई तर्क नहीं लेता है।
एक प्रोटोटाइप एक फ़ंक्शन घोषणा है जो फ़ंक्शन के तर्क (प्रकार) को निर्दिष्ट करता है।
एक गैर-प्रोटोटाइप फ़ंक्शन घोषणा की तरह
int foo();
एक पुरानी शैली की घोषणा है जो संख्या या प्रकार के तर्कों को निर्दिष्ट नहीं करती है। (1989 एएनएसआई सी मानक से पहले, यह भाषा में उपलब्ध एकमात्र प्रकार की फ़ंक्शन घोषणा है।) आप इस तरह के फ़ंक्शन को किसी भी मनमानी संख्या के साथ कॉल कर सकते हैं, और कंपाइलर को शिकायत करने की आवश्यकता नहीं है - लेकिन अगर कॉल परिभाषा के साथ असंगत है , आपके कार्यक्रम में अपरिभाषित व्यवहार है।
एक फ़ंक्शन के लिए जो एक या अधिक तर्क लेता है, आप घोषणा में प्रत्येक तर्क के प्रकार को निर्दिष्ट कर सकते हैं:
int bar(int x, double y);
बिना किसी तर्क के कार्य एक विशेष मामला है। तार्किक रूप से, खाली कोष्ठक एक तर्क को निर्दिष्ट करने का एक अच्छा तरीका होता, लेकिन वह वाक्य-विन्यास पहले से ही पुरानी शैली के फ़ंक्शन घोषणाओं के लिए उपयोग में था, इसलिए ANSI C समिति ने void
कीवर्ड का उपयोग करके एक नया सिंटैक्स का आविष्कार किया :
int foo(void); /* foo takes no arguments */
एक समारोह परिभाषा (जिसमें फ़ंक्शन वास्तव में क्या करता है के लिए कोड शामिल है) एक घोषणा भी प्रदान करता है । आपके मामले में, आपके पास कुछ समान है:
int testlib()
{
/* code that implements testlib */
}
यह एक गैर-प्रोटोटाइप घोषणा प्रदान करता है testlib
। एक परिभाषा के रूप में, यह संकलक को बताता है testlib
जिसका कोई पैरामीटर नहीं है, लेकिन एक घोषणा के रूप में, यह केवल संकलक को बताता है जो testlib
कुछ अनिर्दिष्ट लेकिन निश्चित संख्या और तर्कों के प्रकार लेता है।
आप को बदलते हैं ()
करने के लिए (void)
घोषणा एक प्रोटोटाइप बन जाता है।
एक प्रोटोटाइप का लाभ यह है कि यदि आप गलती testlib
से एक या अधिक तर्कों के साथ कॉल करते हैं, तो संकलक त्रुटि का निदान करेगा।
(C ++ में थोड़े अलग नियम हैं। C ++ में पुरानी शैली की फ़ंक्शन घोषणाएं नहीं हैं, और खाली कोष्ठक का विशेष रूप से मतलब है कि एक फ़ंक्शन कोई तर्क नहीं लेता है। C ++ (void)
सी के साथ संगतता के लिए सिंटैक्स का समर्थन करता है, लेकिन जब तक आपको विशेष रूप से दोनों को संकलित करने के लिए आपके कोड की आवश्यकता नहीं होती है। C और C ++ के रूप में, आपको संभवतः ()
C ++ और C में (void)
सिंटैक्स का उपयोग करना चाहिए )