Tôi nhớ đọc trước về ý nghĩa (hoặc thiếu nó) giữa bao gồm tên tham số trong khai báo hàm và không bao gồm một tên. Nhưng tôi không thể nhớ những gì tôi đã đọc hoặc nơi tôi đọc nó.sự khác biệt giữa việc bao gồm tên thông số trong khai báo hàm và không bao gồm một thông số là gì?
ví dụ,
void do_something(int *); // No parameter name included, only type.
vs ...
void do_something(int * i); // type AND parameter name included.
Vì vậy, sự khác biệt giữa hai tờ khai này là gì? Cảm ơn bạn đã đọc và có thể trả lời câu hỏi này có thể tầm thường.
- CẬP NHẬT -
Được rồi, do đó, điều tôi đã đọc được một tập hợp các hướng dẫn phong cách từ một giáo sư cũ của tôi cảnh báo chống lại bao gồm một tên tham số trong định nghĩa hàm và KHÔNG sử dụng tham số trong hàm .
void do_something(int * i) { //code that doesn't use i;} //BAD
void do_something(int *) { //code that doesn't use i;} //OK
Macro là loại tà ác, những gì có xung đột tên, nhiều đánh giá của arg, v.v. Đôi khi chúng thực sự cần thiết, nhưng tốt hơn hết là tránh chúng nói chung. Vì vậy, tốt hơn sử dụng mẫu chức năng 'unusedParam'. Đó là, nếu bạn không thể sống với các cảnh báo. Chúc mừng, –
Đồng ý, macro là điều ác. Nhưng IMO, bất kỳ mã nào tồn tại chỉ để nói "yeah, tôi không làm bất cứ điều gì với lập luận này. Shut up, bạn trình biên dịch ngu ngốc!" không tốt hơn nhiều. – cHao
Đó là lý do tại sao cú pháp '(void) argName;' tồn tại. Điều đó nói với trình biên dịch rằng 'argName' được" sử dụng ", mặc dù nó đánh giá thành một no-op. –