Sau khi thấy (và hỏi!) Rất nhiều câu hỏi tương tự như
Không gì
int (*f)(int (*a)[5])
có nghĩa là trong C?
và thậm chí khi thấy rằng họ đã tạo ra một chương trình để giúp mọi người hiểu cú pháp C, tôi không thể không tự hỏi:
Tại sao cú pháp của C được thiết kế theo cách này?
Ví dụ, nếu tôi đang thiết kế các con trỏ, tôi sẽ dịch "một con trỏ thành một mảng gồm 10 phần tử con trỏ" thành
int*[10]* p;
và không
int* (*p)[10];
mà tôi cảm thấy hầu hết mọi người sẽ đồng ý là ít đơn giản hơn nhiều.
Vì vậy, tôi tự hỏi, tại sao, cú pháp, không trực quan? Có một vấn đề cụ thể mà cú pháp giải quyết (có lẽ là một sự mơ hồ?) Mà tôi không biết?
cdecl
lệnh là rất tiện dụng để giải mã tờ khai C phức tạp. Ngoài ra còn có một giao diện web tại cdecl.org .