สาเหตุของการมีพารามิเตอร์ที่ไม่ได้ใช้ในต้นแบบมักเป็นเพราะฟังก์ชันจำเป็นต้องสอดคล้องกับ API ภายนอกบางอย่าง - บางทีอาจเป็นฟังก์ชันไลบรารีหรือตัวชี้ไปยังฟังก์ชันนั้นจะถูกส่งไปยังฟังก์ชันอื่นที่คาดว่าจะมีการเรียกใช้แบบนี้ อย่างไรก็ตามไม่ใช่ว่าอาร์กิวเมนต์ทั้งหมดที่ใช้โดยรูปแบบการเรียกนั้นจำเป็นจริงๆในฟังก์ชันเอง
เหตุผลในการกล่าวถึงชื่อพารามิเตอร์ในเนื้อหาคือการหลีกเลี่ยงคำเตือนเช่น
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)
นักแสดงเข้ามา - มันจะบอกคอมไพเลอร์อย่างชัดเจนและชัดเจนว่าคำสั่งนั้นควรจะไม่มีผลอย่างแน่นอน