प्रोटोटाइप में अप्रयुक्त मापदंडों के होने का कारण आमतौर पर यह है कि फ़ंक्शन को कुछ बाहरी एपीआई के अनुरूप होने की आवश्यकता होती है - शायद यह एक लाइब्रेरी फ़ंक्शन है, या उस फ़ंक्शन का एक संकेतक दूसरे फ़ंक्शन को दिया जाता है जो इस कॉलिंग कन्वेंशन की अपेक्षा करता है। हालाँकि, कॉलिंग कन्वेंशन द्वारा उपयोग किए जाने वाले सभी तर्क वास्तव में फ़ंक्शन में आवश्यक नहीं हैं।
शरीर में पैरामीटर नाम का उल्लेख करने का कारण चेतावनियों से बचना है
unused.c: In function ‘l_alloc’:
unused.c:3:22: warning: unused parameter ‘ud’ [-Wunused-parameter]
void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) {
^~
इस चेतावनी को फ़ंक्शन बॉडी में वास्तविक पैरामीटर का उपयोग करके दबाया जा सकता है। उदाहरण के लिए यदि आपके पास निम्न कथन है:
ud;
यह चेतावनी अब दबा दी गई है। हालाँकि अब GCC एक और चेतावनी पेश करेगी :
unused.c:5:5: warning: statement with no effect [-Wunused-value]
ud;
^~
यह चेतावनी बताती है कि ud;
वाक्यगत रूप से मान्य C होने के दौरान कथन कुछ भी प्रभावित नहीं करता है, और संभवतः एक गलती है, कथन के विपरीत नहीं
abort;
जो शायद abort();
इसके बजाय कुछ करने के लिए लिखा जाना चाहिए था।
और यही वह जगह है जहां (void)
कलाकार आता है - यह संकलक को स्पष्ट रूप से बताएगा और स्पष्ट रूप से कथन का बिल्कुल प्रभाव नहीं होना चाहिए।