Các auto
từ khóa là vô dụng trong ngôn ngữ C. Nó ở đó vì trước ngôn ngữ C đã tồn tại một ngôn ngữ B trong đó từ khóa đó là cần thiết để khai báo các biến cục bộ. (B được phát triển thành NB, trở thành C).
Đây là sổ tay hướng dẫn cho B .
Như bạn có thể thấy, sách hướng dẫn có rất nhiều ví dụ auto
được sử dụng. Điều này là như vậy bởi vì không có int
từ khóa. Một số loại từ khóa là cần thiết để nói rằng "đây là một khai báo của một biến", và từ khóa đó cũng cho biết liệu nó là một biến cục bộ hay bên ngoài ( auto
so với extrn
). Nếu bạn không sử dụng cái này hoặc cái kia, bạn có lỗi cú pháp. Điều đó có nghĩa là, x, y;
không phải là một tuyên bố của chính nó, nhưng auto x, y;
là.
Vì các cơ sở mã được viết bằng B phải được chuyển sang NB và sang C khi ngôn ngữ này được phát triển, các phiên bản mới hơn của ngôn ngữ mang một số hành lý để cải thiện khả năng tương thích ngược giúp dịch ít công việc hơn. Trong trường hợp của auto
, các lập trình viên không phải tìm kiếm mọi lần xuất hiện auto
và loại bỏ nó.
Rõ ràng là từ hướng dẫn sử dụng, chữ "int ngầm" trong C (có thể viết main() { ... }
mà không cần viết int
phía trước) cũng xuất phát từ B. Đó là một tính năng tương thích ngược khác để hỗ trợ mã B. Các hàm không có kiểu trả về được chỉ định trong B vì không có kiểu. Mọi thứ đều là một từ, giống như trong nhiều ngôn ngữ lắp ráp.
Lưu ý cách một hàm có thể được khai báo extrn putchar
và điều duy nhất khiến nó trở thành một hàm sử dụng mã định danh : nó được sử dụng trong một biểu thức gọi hàm như thế nào putchar(x)
, và đó là điều yêu cầu trình biên dịch coi từ không đánh máy đó như một con trỏ hàm.
auto
có thể được chỉ định nhưng sẽ không xảy ra theo mặc định không?