Bộ tiền xử lý C được gắn vào C, nhưng nó có cú pháp hoàn toàn khác với ngôn ngữ chính:
khoảng trắng có ý nghĩa cú pháp (cuối dòng kết thúc một câu lệnh, khoảng trống sau khi macro xác định bắt đầu danh sách thay thế)
khối dựa trên từ khóa thay vì khối giằng,
elif
thay vì khốielse if
định nghĩa dựa trên từ khóa thay vì khai báo-phản ánh-sử dụng, không
=
cho định nghĩa giá trịgợi ý về cú pháp chuỗi thay thế (
#include <>
vs#include ""
)đánh giá lười biếng (của C, rõ ràng; nhưng 6.10.3.1 có thể được đọc là ngụ ý một thứ tự cụ thể của việc mở rộng vĩ mô, ở một vài nơi quan trọng)
Nó thực sự không giống C chút nào! Về mặt kỹ thuật, đây là ngôn ngữ riêng của nó, nhưng nó luôn được sử dụng như một phần gần như không thể tách rời của C và có vẻ rất lạ là nó sẽ không tích hợp với nó về mặt cú pháp.
Wikipedia không nói về lịch sử của nó; Kho lưu trữ mẫu Portland cung cấp cho nó một đề cập vượt qua , nhưng không đi sâu vào chi tiết ngoài thực tế là nó được thiết kế bởi những người khác so với phần còn lại của trang web C. Dennis Ritchie với lịch sử của C có thể đã có câu trả lời, nhưng rất tiếc là không còn tồn tại
Như một công cụ vĩ mô, nó rõ ràng là có ngữ nghĩa rất khác với ngôn ngữ thời gian chạy, mà có thể giải thích một số khác biệt, nhưng không phải là khía cạnh thiết kế trực quan (nó cũng không rõ ràng để mắt hiện đại cho dù đó ban đầu được dự định như là khả năng của các loại của niềm vui mà nó hệ thống thay thế cho phép, hoặc liệu đó có phải là "chỉ" một cách nhanh chóng cho các chức năng nội tuyến trong một thời gian trước khi tối ưu hóa mạnh mẽ). Cảm giác giống như một cái gì đó gần với những gì cuối cùng đã trở thành các mẫu C ++ sẽ là một sự tiến hóa hợp lý hơn đối với các macro, nếu ngữ nghĩa giống như C thực sự là điểm khởi đầu, nhưng có ít bằng chứng cụ thể hơn về cú pháp.
Chúng ta có bất kỳ ghi chép về lý do tại sao nó được thiết kế theo cách này, hoặc những ảnh hưởng của người sáng tạo là gì?