इस संबंध में C और C ++ अलग-अलग हैं।
सी 2011 ऑनलाइन मानक
6.7.6.3 फ़ंक्शन घोषणापत्र (प्रोटोटाइप सहित)
...
10 void
सूची में एकमात्र आइटम के रूप में अनाम पैरामीटर का विशेष मामला निर्दिष्ट करता है कि फ़ंक्शन में कोई पैरामीटर नहीं है।
...
14 एक पहचानकर्ता सूची केवल फ़ंक्शन के मापदंडों के पहचानकर्ता की घोषणा करती है। एक फ़ंक्शन घोषणाकर्ता में एक खाली सूची जो उस फ़ंक्शन की परिभाषा का हिस्सा है, निर्दिष्ट करती है कि फ़ंक्शन का कोई पैरामीटर नहीं है। एक फ़ंक्शन घोषणा में खाली सूची जो उस फ़ंक्शन की परिभाषा का हिस्सा नहीं है, यह निर्दिष्ट करती है कि मापदंडों की संख्या या प्रकारों के बारे में कोई जानकारी नहीं दी गई है। 145)
संक्षेप में, एक फ़ंक्शन घोषणा में एक खाली पैरामीटर सूची इंगित करती है कि फ़ंक्शन एक अनिर्दिष्ट संख्या पैरामीटर लेता है , जबकि फ़ंक्शन परिभाषा में एक खाली पैरामीटर सूची इंगित करती है कि फ़ंक्शन कोई पैरामीटर नहीं लेता है ।
T foo( void ); // declaration, foo takes no parameters
T bar(); // declaration, bar takes an *unspecified* number of parameters
T foo( void ) { ... } // definition, foo takes no parameters
T bar() { ... } // definition, bar takes no parameters
जहाँ तक C का संबंध है, आपको कभी भी किसी फ़ंक्शन की घोषणा या परिभाषा में एक खाली पहचानकर्ता सूची का उपयोग नहीं करना चाहिए । यदि कोई फ़ंक्शन किसी पैरामीटर को लेने के लिए नहीं है, तो निर्दिष्ट करें कि void
पैरामीटर सूची में उपयोग करके ।
ऑनलाइन सी ++ मानक
8.3.5 कार्य [dcl.fct]
...
4 पैरामीटर-घोषणा-खंड उन तर्कों को निर्धारित करता है जिन्हें निर्दिष्ट किया जा सकता है, और उनके प्रसंस्करण, जब फ़ंक्शन कहा जाता है। [ नोट: पैरामीटर-घोषणा-खंड तर्क समारोह कॉल पर निर्दिष्ट कन्वर्ट करने के लिए प्रयोग किया जाता है; 5.2.2 देखें। - अंतिम नोट ] यदि पैरामीटर-घोषणा-खंड खाली है, तो फ़ंक्शन कोई तर्क नहीं लेता है। एक पैरामीटर सूची जिसमें गैर-निर्भर प्रकार void
का एकल अनाम पैरामीटर शामिल है, एक खाली पैरामीटर सूची के बराबर है। इस विशेष मामले को छोड़कर, एक पैरामीटर प्रकार नहीं होगा cv void
। यदि पैरामीटर-घोषणा-खंडएक दीर्घवृत्त या एक फ़ंक्शन पैरामीटर पैक (14.5.3) के साथ समाप्त होता है, तर्कों की संख्या उन मापदंडों की संख्या के बराबर या उससे अधिक होगी जो डिफ़ॉल्ट तर्क नहीं रखते हैं और फ़ंक्शन पैरामीटर पैक नहीं हैं। जहां वाक्यगत रूप से सही है और जहां "..." एक सार-घोषणाकर्ता का हिस्सा नहीं है , "... ..." का पर्याय है "..."। [ उदाहरण: घोषणा int printf(const char*, ...);
एक फ़ंक्शन की घोषणा करता है जिसे अलग-अलग संख्याओं और प्रकार के तर्कों के साथ बुलाया जा सकता है। printf("hello world");
printf("a=%d b=%d", a, b);
हालाँकि, पहला तर्क एक प्रकार का होना चाहिए जिसे एक const char*
- अंतिम उदाहरण में परिवर्तित किया जा सकता है ] [ नोट: मानक हेडर <cstdarg>
में दीर्घवृत्त का उपयोग करके पारित तर्कों तक पहुँचने के लिए एक तंत्र होता है (5.2.2 और 18.10 देखें)। - अंतिम नोट ]
C ++ के मामले में, एक डिक्लेरेशन या डेफिनिशन में एक खाली पैरामीटर सूची इंगित करती है कि फ़ंक्शन कोई तर्क नहीं लेता है, और पैरामीटर सूची का उपयोग करने के बराबर है void
।