Seperti yang disebutkan dalam banyak pertanyaan saya sebelumnya, saya sedang mengerjakan K&R, dan saat ini sedang dalam preprocessor. Salah satu hal yang lebih menarik - sesuatu yang tidak pernah saya ketahui sebelumnya dari upaya saya sebelumnya untuk mempelajari C - adalah ##operator preprocessor. Menurut K&R:
Operator preprocessor
##menyediakan cara untuk menggabungkan argumen aktual selama ekspansi makro. Jika parameter dalam teks pengganti bersebelahan dengan a##, parameter tersebut diganti dengan argumen aktual,##spasi putih di sekitarnya akan dihapus, dan hasilnya dipindai ulang. Misalnya, makropastemenggabungkan dua argumennya:
#define paste(front, back) front ## backjadi
paste(name, 1)buat tokennyaname1.
Bagaimana dan mengapa seseorang menggunakan ini di dunia nyata? Apa contoh praktis penggunaannya, dan adakah hal-hal yang perlu dipertimbangkan?
std::wstring BuildDate = WIDEN(__DATE__) L" " WIDEN(__TIME__);dan secara implisit membangun seluruh string sekaligus.