Như đã đề cập trong nhiều câu hỏi trước đây của tôi, tôi đang làm việc thông qua K&R và hiện đang sử dụng bộ tiền xử lý. Một trong những điều thú vị hơn - điều mà tôi chưa từng biết trước đây từ bất kỳ nỗ lực học C nào trước đây - là ##
toán tử tiền xử lý. Theo K&R:
Toán tử tiền xử lý
##
cung cấp một cách để nối các đối số thực tế trong quá trình mở rộng macro. Nếu một tham số trong văn bản thay thế liền kề với a##
, thì tham số đó sẽ được thay thế bằng đối số thực,##
khoảng trắng và khoảng trắng xung quanh bị xóa và kết quả được quét lại. Ví dụ: macropaste
nối hai đối số của nó:
#define paste(front, back) front ## back
vì vậy
paste(name, 1)
tạo mã thông báoname1
.
Làm thế nào và tại sao ai đó sẽ sử dụng điều này trong thế giới thực? Những ví dụ thực tế về việc sử dụng nó là gì và có những vấn đề gì cần xem xét không?
std::wstring BuildDate = WIDEN(__DATE__) L" " WIDEN(__TIME__);
và hoàn toàn xây dựng toàn bộ chuỗi cùng một lúc.