//test.c
#include <unistd.h>
#include <stdio.h>
int main()
{
#line 90 "digitmap.y"
    printf("current line number %d ,current file %s\n", __LINE__, __FILE__);
    return 0;
}
cc test.c 
./a.out 
运行结果 为 current line number 90 ,current file digitmap.y如果注释掉 //#line 90 "digitmap.y"
运行结果为
./a.out 
current line number 6 ,current file test.c#line 90 "digitmap.y" 其实就表示宏替换的意思,将  __LINE__, __FILE__ 分别替换成 #lilne 后的行号和文件名