GCC nó cho phép ko có nghĩa là nó đúng. Thế bạn có viết kiểu này ko?
int& two = 2;
ko bao giờ đúng ko? Vì 2 là hằng số, two là biến thay đổi được lại tham chiếu tới hằng số, vậy là sai. Tương tự về mặt logic, “hello” là hằng mảng ký tự, vậy tại sao lại cho phép biến thay đổi được lại trỏ tói “hello” được? Chỉ vì mảng ký tự có tồn tại trên vùng nhớ nên bạn được quyền trỏ lung tung bất chấp ko thay đổi giá trị vùng nhớ đó được? const char[6]
decay thành const char*
, nhưng const char*
khác với char*
, ai cho phép bạn tự tiện ép kiểu const thành non-const? Trỏ tới vùng ko thay đổi được phải ghi con trỏ tới const char
rõ ràng, Ko có const trình dịch phải la làng là đúng. Nói “sốc” hơn 1 tí là trình dịch nào ko la thì uninstall nó, nói sốc như vậy để gây ấn tượng mạnh dẫn tới nhớ lâu hơn là trình dịch này dỏm ở chỗ này, ko nhất thiết phải uninstall nó, nhưng ai làm theo thì cũng được thôi =)
bạn nói “miễn là người sử dụng hiểu rõ và chú ý không thay đổi nội dung mà con trỏ *s trỏ tới là được” vậy đẻ ra keyword const
làm gì nữa, cứ để người sử dụng tự quyêt là được? Nói rộng ra hơn nữa đẻ ra keyword private
, protected
trong class làm chi cho mất công vậy, người dùng tự biết được rồi. Đẻ ra mấy từ khóa này là để người sử dụng ko tự chỉa súng vô hạ bộ của họ, họ đi đứng thì ko sao chứ cuối xuống lụm tờ $100 là tàn đời trai ngay.
GCC thì chỉ cần thêm -pedantic-errors
vào là nó la to hơn. Nếu bạn rảnh hơi hơn nữa thì phải sửa cho hết warning, chứ ko chỉ sửa hết error là được. Khi biên dịch 1 chương trình nó ói ra hằng trăm warnings thì mọi người sẽ nghĩ gì về người viết chương trình đó? Lười biếng? Viết code ẩu? Ko thèm quan tâm tới chất lượng code? 1 số trường hợp lờ warning đi là sai lầm: vd trong C viết gets(line)
được ko có nghĩa là nó an toàn, trình dịch điêu thì nó chỉ nói nhỏ warning cho mình lờ đi, trình dịch tốt bụng thì nó la làng thành error bắt mình phải sửa. Nó to mồm khó chịu hơn nhưng nó giúp mình viết code ít sai hơn. Lâu lâu rảnh rỗi thì đi tìm mấy cái flag warning về thêm vào cho nó la ỏm tỏi lên =), lúc đó mới biết code ngu như thế nào.