Como mencioné en muchas de mis preguntas anteriores, estoy trabajando con K&R y actualmente estoy en el preprocesador. Una de las cosas más interesantes, algo que nunca supe antes de mis intentos anteriores de aprender C, es el ##operador del preprocesador. Según K&R:
El operador del preprocesador
##proporciona una forma de concatenar argumentos reales durante la expansión de macros. Si un parámetro en el texto de reemplazo es adyacente a a##, el parámetro se reemplaza por el argumento real, el##espacio en blanco y los alrededores se eliminan y el resultado se vuelve a escanear. Por ejemplo, la macropasteconcatena sus dos argumentos:
#define paste(front, back) front ## backentonces
paste(name, 1)crea el tokenname1.
¿Cómo y por qué alguien usaría esto en el mundo real? ¿Cuáles son ejemplos prácticos de su uso y hay trampas a considerar?
std::wstring BuildDate = WIDEN(__DATE__) L" " WIDEN(__TIME__);y construir implícitamente toda la cadena a la vez.