如何在内核代码中扩展__FILE__和__LINE__?

Jon*_*tan -1 c linux kernel

我正在阅读Linux设备驱动程序,并注意到您可以使用printk打印当前行和文件.这是如何实现的?Linux如何跟踪包含printk语句的行?我还没有在用户空间中编写的"普通C代码"中看到类似的功能.

这是LDD3的一个例子:

printk(KERN_DEBUG "Here I am: %s:%i\n", __FILE__, __LINE__);
Run Code Online (Sandbox Code Playgroud)

编辑:正如piokuc所说,这些实际上是标准的宏.GCC文档在这里描述它们:http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html

__CODE__为每一行设置并由预处理器替换为当前行,__CODE__为每个文件设置.

pio*_*kuc 7

__FILE__并且__LINE__是C预处理器宏,这不是内核特定的.