¿Qué es a##b
& #a
?¿Cómo funciona este código C?
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
main()
{
printf("%s\n",h(f(1,2))); //how should I interpret this?? [line 1]
printf("%s\n",g(f(1,2))); //and this? [line 2]
}
¿Cómo funciona este programa?
La salida es
12
f(1, 2)
Ahora entiendo cómo a##b
& #a
trabajo. Pero, ¿por qué el resultado es diferente en los dos casos (línea 1 y línea 2)?
¿Qué sucede cuando ejecutas ese programa? Hacer eso debería ayudarte a entender lo que está sucediendo. –
Realmente, jugar un rato con ese código arrojará luz. Y si tienes preguntas específicas, no dudes en preguntarlas aquí. – sharptooth