Mã cổng từ 32 bit đến 64bit. Rất nhiều địa điểm vớiint vs size_t trên 64bit
int len = strlen(pstr);
Tất cả đều tạo cảnh báo ngay bây giờ vì strlen() trả về size_t là 64 bit và int vẫn là 32 bit. Vì vậy, tôi đã thay thế chúng bằng
size_t len = strlen(pstr);
Nhưng tôi chỉ nhận ra rằng đây không phải là an toàn, như size_t là unsigned và nó có thể được coi là chữ ký của mã (Tôi thực sự chạy vào một trường hợp nó gây ra một vấn đề, cảm ơn bạn, kiểm tra đơn vị!).
Quay trở lại một cách mù quáng khi quay trở lại (int) cảm thấy bẩn. Hoặc có lẽ nó không nên?
Vì vậy, câu hỏi đặt ra là: có một giải pháp thanh lịch cho việc này không? Tôi có thể có hàng nghìn dòng mã như thế trong codebase; Tôi không thể kiểm tra thủ công từng cái một và vùng phủ sóng thử nghiệm hiện ở đâu đó giữa 0,01 và 0,001%.
Bạn có một ví dụ nơi chiều dài này được xử lý như đã ký kết? – kroimon
Ví dụ có thể là một cái gì đó dọc theo các dòng: 'len--; if (len <0) {break} ' – Tim