Mức cao nhất const
trên một đối số chính thức không phải là một phần của kiểu hàm. Bạn có thể thêm hoặc bớt nó tùy thích: nó chỉ ảnh hưởng đến những gì bạn có thể làm với đối số trong việc triển khai hàm.
Vì vậy, cho argc
bạn có thể thêm tự do thêm a const
.
Nhưng đối với argv
bạn không thể tạo dữ liệu ký tự const
mà không thay đổi chữ ký hàm. Điều đó có nghĩa là nó không phải là một trong những main
chữ ký hàm tiêu chuẩn và sẽ không phải được công nhận là một main
hàm. Vì vậy, không phải là một ý kiến hay.
Một lý do chính đáng cho việc không sử dụng các main
đối số tiêu chuẩn trong các chương trình không phải đồ chơi là trong Windows, chúng không thể biểu diễn các đối số chương trình thực tế, chẳng hạn như tên tệp với các ký tự quốc tế. Đó là bởi vì trong Windows, chúng được mã hóa theo quy ước rất mạnh là Windows ANSI. Trong Windows, bạn có thể triển khai một số phương tiện truy cập đối số di động hơn về mặt GetCommandLine
hàm API.
Tóm lại, không có gì ngăn cản bạn thêm const
vào argc
, nhưng tính hữu ích nhất const
trên argv
sẽ cung cấp cho bạn một hàm không chuẩn main
, hầu hết có thể không được công nhận như vậy. Thật hạnh phúc (nói một cách mỉa mai) có lý do chính đáng để không sử dụng các main
đối số tiêu chuẩn cho mã nghiêm túc di động. Rất đơn giản, đối với thực tế, họ chỉ hỗ trợ ASCII cũ, chỉ với các chữ cái trong bảng chữ cái tiếng Anh.
argc
làconst
.