Dường như với tôi rằng toán tử mũi tên của C (->) là không cần thiết. Toán tử dấu chấm (.) Phải là đủ. Hãy lấy mã sau:Toán tử Arrow so với toán tử Dot
typedef struct {
int member;
} my_type;
my_type foo;
my_type * bar;
int val;
val = foo.member;
val = bar->member;
Chúng tôi thấy rằng toán tử mũi tên phải được sử dụng cho thanh điều khiển. Tuy nhiên, tôi muốn viết
val = bar.member;
Không có sự mơ hồ về việc liệu tôi có cố gắng kéo 'thành viên' từ cấu trúc hoặc từ con trỏ đến cấu trúc hay không. Nhưng rất dễ sử dụng toán tử sai, đặc biệt khi mã tái cấu trúc. (Ví dụ, có lẽ tôi đang làm một số hoạt động phức tạp trên foo, vì vậy tôi di chuyển mã vào một hàm mới và chuyển một con trỏ tới foo). Tôi không nghĩ rằng tôi cần phải quan tâm cho dù foo là một con trỏ hay không; trình biên dịch có thể lo lắng về các chi tiết.
Vì vậy, câu hỏi: sẽ không đơn giản hơn để loại bỏ -> từ ngôn ngữ C?
Câu hỏi này không phù hợp với định dạng Giải Đáp của chúng tôi. Chúng tôi hy vọng câu trả lời thường liên quan đến sự kiện, tài liệu tham khảo hoặc chuyên môn cụ thể; câu hỏi này có thể sẽ thu hút ý kiến, tranh luận, tranh luận, bỏ phiếu hoặc thảo luận mở rộng. – bzlm
Hiện có hàng tỷ dòng mã C đang được sử dụng. Nó sẽ không đơn giản để loại bỏ bất cứ điều gì từ ngôn ngữ C. Điều đó nói lên, nhân chứng về sự vô đạo là A Good Thing. –
Bạn nói đúng, không cần thiết. Đó là cú pháp đường cho '(* bar) .member'. Theo định nghĩa, chúng tôi không _need_ bất kỳ đường cú pháp nào. Sau đó, một lần nữa, chúng tôi không _need_ chức năng, một trong hai. chúng tôi _could_ chỉ làm mọi thứ với 'goto'. – jpm