#include <stdio.h>
#define LINE_FILE ("Line %d of file %s", __LINE__, __FILE__)
int main(void) {
const char* str = LINE_FILE;
printf("%s\n", str);
printf("Line %d of file %s\n", __LINE__, __FILE__);
}
First print statement only prints the file name and not the complete line.
>Solution :
If you want a string pre-formatted like that, here’s how you do it:
#include <stdio.h>
#define STR_IMPL(x) #x
#define STR(x) STR_IMPL(x)
#define LINE_FILE ("Line " STR(__LINE__) " of file " __FILE__)
int main() {
printf("%s\n", LINE_FILE);
}