Trong xcat (x, y), x và y không liền kề với toán tử ## và để chúng trải qua việc mở rộng macro trước khi được thay thế.
Vì vậy x được xác định là xcat (1,2) và y được xác định là 3. Nhưng trước để thay thế, x được mở rộng macro thành cat (1,2), biến thành 1 ## 2 biến thành 12. Vì vậy, cuối cùng, xcat (xcat (1,2), 3) sẽ mở rộng cho mèo (12,3), sẽ bật ra 123.
Tác phẩm này -> cat (xcat (1) , 2), 3) -> mèo (mèo (1,2), 3) -> mèo (12,3)
Hành vi này được xác định rõ ràng vì tất cả các thẻ dán mã thông báo dẫn đến hợp lệ các mã thông báo tiền xử lý tức là bất kỳ xpression mở rộng nào cũng nên một mã thông báo hợp lệ ở bất kỳ giai đoạn nào.
Bạn có nghĩa là 'sau đó kết quả của xcat (xcat (1,2), 3) bây giờ là 123' không? –
@notfed: Xin lỗi tôi đã nhầm lẫn khi viết câu hỏi. Kết quả của xcat (xcat (1,2), 3) là 123 – sourabh912