tôi (nhanh chóng) viết một số mã và vô tình đảo ngược các đối số trong scanf()
:luận Inverted trong scanf()
char i[] = "ABC1\t";
scanf(i, "%s");
Biên soạn với gcc -Werror -Wall -Wextra
không phàn nàn về một chút này. Rõ ràng, mã này không hoạt động, nhưng tại sao gcc không thông báo cho tôi rằng tôi đã đảo ngược các đối số? Không thể phát hiện rằng i
không phải là chuỗi định dạng hoặc đối số thứ hai không phải là loại có thể lưu trữ?
EDIT
Cảm ơn vì sự hiểu biết tất cả, Hình như tôi thấy câu trả lời, đã có một twist trên -Wformat
cờ mà làm này "catchable" (được đăng dưới đây để tham khảo)
Vâng, +1 Tôi cũng đang tìm kiếm nó. \ – Omkant