Có cách nào để cảnh báo về việc bỏ lỡ tên đối số giữa khai báo hàm và định nghĩa của nó không?C++ Làm thế nào để cảnh báo về sự khác biệt giữa tên đối số trong khai báo hàm và định nghĩa
Tuyên bố
double divide(int a, int b);
Definition
double divide(int b, int a)
{
return a/b;
}
Đối với một người sử dụng, đó sử dụng chức năng divide
, sẽ mong đợi a/b và kết quả là không b/a.
Tôi biết, trình biên dịch không thể làm điều đó, nhưng có một số công cụ phân tích tĩnh có thể làm điều đó không? Nếu có, cái nào?
đối số chỉ có vị trí trong C. Tôi đã thử nghiệm với '-Wall' và không may mắn BTW. –
Vì lý do đơn giản là nếu ai đó không biết cách hàm được khai báo, có thể nhận được kết quả không mong muốn từ nó. Ví dụ: a/b! = B/a – lucab0ni
tất nhiên, đó là một vấn đề thực sự. Nhưng trong C không thể làm được. Tôi chắc rằng một số máy phân tích mã như ClokWork hoặc Logiscope đề xuất các kiểm tra như vậy. –