Alasan memiliki parameter yang tidak digunakan dalam prototipe biasanya karena fungsi tersebut perlu menyesuaikan dengan beberapa API eksternal - mungkin itu adalah fungsi perpustakaan, atau penunjuk ke fungsi itu diteruskan ke fungsi lain yang mengharapkan konvensi pemanggilan ini. Namun tidak semua argumen yang digunakan oleh konvensi pemanggilan sebenarnya dibutuhkan dalam fungsi itu sendiri.
Alasan penyebutan nama parameter di body adalah untuk menghindari peringatan seperti
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) {
^~
Peringatan ini dapat ditekan dengan menggunakan parameter aktual di badan fungsi. Misalnya jika Anda memiliki pernyataan berikut:
ud;
Peringatan ini sekarang disembunyikan. Namun sekarang GCC akan mengeluarkan peringatan lain :
unused.c:5:5: warning: statement with no effect [-Wunused-value]
ud;
^~
Peringatan ini memberi tahu bahwa pernyataan ud;
, meskipun C secara sintaksis valid, tidak memengaruhi apa pun sama sekali, dan mungkin merupakan kesalahan, tidak seperti pernyataan tersebut.
abort;
yang mungkin seharusnya ditulis sebagai abort();
gantinya untuk melakukan sesuatu.
Dan di situlah peran (void)
pemeran - ini akan memberi tahu kompiler dengan jelas dan eksplisit bahwa pernyataan itu seharusnya sama sekali tidak berpengaruh sama sekali.