Когда я использую этот код:
#include <stdio.h>
#define STR(x) #x
int main(void)
{
printf(__FILE__ STR(__LINE__) "hello!\n");
return 0;
}
он печатает
hello.c__LINE__hello!
но когда я использую это:
#include <stdio.h>
#define STR(x) VAL(x)
#define VAL(x) #x
int main(void)
{
printf(__FILE__ STR(__LINE__) "hello!\n");
return 0;
}
он печатает
hello.c7hello!
какая разница между
#define STR(x) #x
и
#define STR(x) VAL(x)
#define VAL(x) #x