Prototipte kullanılmayan parametrelere sahip olmanın nedeni genellikle işlevin bazı harici API'lere uyması gerektiğidir - belki de bir kitaplık işlevidir veya bu işleve bir işaretçi, bu çağrı kuralını bekleyen başka bir işleve geçirilir. Ancak, çağırma kuralı tarafından kullanılan tüm argümanlara aslında işlevin kendisinde ihtiyaç duyulmaz.
Gövde kısmında parametre isminden bahsetme sebebi , aşağıdaki gibi uyarılardan kaçınmaktır
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) {
^~
Bu uyarı , işlev gövdesindeki gerçek parametre kullanılarak bastırılabilir. Örneğin, aşağıdaki ifadeye sahipseniz:
ud;
Bu uyarı artık bastırılmıştır. Ancak şimdi GCC başka bir uyarı üretecek :
unused.c:5:5: warning: statement with no effect [-Wunused-value]
ud;
^~
Bu uyarı, ud;
sözdizimsel olarak geçerli olan C ifadesinin hiçbir şeyi etkilemediğini ve muhtemelen ifadeden farklı olarak bir hata olduğunu söyler.
abort;
belki de abort();
bunun yerine bir şeyler yapması için yazılması gerekirdi .
İşte burada (void)
oyuncu kadrosu devreye giriyor - derleyiciye açık ve net bir şekilde ifadenin kesinlikle hiçbir etkisinin olmaması gerektiğini söyleyecektir.