Tài liệu này trong phần 2.6 Bao gồm tính toán có đoạn sau:
Nếu dòng mở rộng thành luồng mã thông báo bắt đầu bằng <mã thông báo và bao gồm mã thông báo>, thì mã thông báo giữa <và đầu tiên> được kết hợp để tạo thành tên tệp được bao gồm. Bất kỳ khoảng trắng giữa các mã thông báo được giảm xuống một không gian duy nhất; sau đó bất kỳ khoảng trắng nào sau dấu <ban đầu được giữ lại, nhưng một khoảng trắng ở trước khi đóng> bị bỏ qua . CPP tìm kiếm tệp theo các quy tắc cho khung góc bao gồm.
Tôi biết đây là triển khai được xác định, nhưng tại sao nó phải theo cách này cho GCC? Tôi đang đề cập cụ thể đến câu được tô sáng ở trên.
BIÊN TẬP
Tôi vừa nhận thấy rằng đoạn thứ ba trước đoạn trích dẫn ở trên nói như sau:
Bạn phải cẩn thận khi xác định macro.
#define
lưu mã thông báo, không phải văn bản. Bộ tiền xử lý không có cách nào để biết rằng macro sẽ được sử dụng làm đối số#include
, vì vậy nó tạo ra các mã thông thường, không phải là tên tiêu đề. Điều này không có khả năng gây ra vấn đề nếu bạn sử dụng trích dẫn kép bao gồm, gần đủ với các hằng chuỗi. Nếu bạn sử dụng dấu ngoặc góc, tuy nhiên, bạn có thể gặp rắc rối .
Có ai biết loại rắc rối nào đang được chỉ ra ở đây không?