Program 1:
#include <stdio.h>
#define foo(x, y) #x #y
int main()
{
printf("%s\n", foo(k, l)); //prints kl
return 0;
}
Program 2:
#include <stdio.h>
#define foo(m, n) m ## n
int main()
{
printf("%s\n", foo(k, l)); //compiler error
}
Why such variation in the output of both programs? What is the exact difference between these two programs?