Lý do có các tham số không được sử dụng trong nguyên mẫu thường là vì hàm cần phải tuân theo một số API bên ngoài - có thể đó là một hàm thư viện hoặc một con trỏ đến hàm đó được chuyển cho một hàm khác mong đợi quy ước gọi này. Tuy nhiên, không phải tất cả các đối số được sử dụng bởi quy ước gọi đều thực sự cần thiết trong chính hàm.
Lý do đề cập đến tên tham số trong nội dung là để tránh các cảnh báo như
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) {
^~
Cảnh báo này có thể được loại bỏ bằng cách sử dụng tham số thực trong thân hàm. Ví dụ: nếu bạn có câu lệnh sau:
ud;
Cảnh báo này hiện đã bị chặn. Tuy nhiên bây giờ GCC sẽ đưa ra một cảnh báo khác :
unused.c:5:5: warning: statement with no effect [-Wunused-value]
ud;
^~
Cảnh báo này cho biết rằng câu lệnh ud;
, mặc dù có giá trị cú pháp C, nhưng không ảnh hưởng đến bất kỳ điều gì và có thể là một sai lầm, không khác gì câu lệnh
abort;
mà lẽ ra phải được viết để abort();
thay thế cho nó để làm điều gì đó.
Và đó là nơi (void)
diễn viên xuất hiện - nó sẽ nói với trình biên dịch một cách rõ ràng và rõ ràng rằng câu lệnh được cho là hoàn toàn không có tác dụng gì.