C语言中的#line宏

在 C 语言中, __FILE_ 表示当前正在被编译的源文件名字的字符串字面值,__LINE__ 表示当前源文件行数的十进制常量,而 #line 可以改变上述两个宏的内容,即为其指定新的值。主要有以下两种形式:

#line linenum

#line linenum filename
 
上述调用将会使编译器认为:下一行源代码的行号是从 linenum 开始,并且,当前的输入文件有 filename 给出。以下为示例代码:
#include <stdio.h>

int main(void)
{
    printf("-- %s: %d -- \n", __FILE__, __LINE__);
#line 201 "foo.c"
    printf("-- %s: %d -- \n", __FILE__, __LINE__);
#line 101 "foo.c"
    printf("-- %s: %d -- \n", __FILE__, __LINE__);

    return 0;
}

运行结果:

$ gcc -o main ./main.c
$ ./main
-- ./main.c: 5 --
-- foo.c: 201 --
-- foo.c: 101 --
 

猜你喜欢

转载自blog.csdn.net/choumin/article/details/113784383