要研究LINUX内核,C语言是基础中的基础,但是LINUX并不是完全的标准C,而是对标准C做了很多扩展,这些扩展特性对于我们分析内核有着很重要的作用,下面做些总结性的工作。
8、当前函数名
- GNU C中预定义两个标志符保存当前函数的名字,
__FUNCTION__
保存函数在源码中的名字,
__PRETTY__FUNCTION__
保存带语言特色的名字。 - 在C函数中这两个名字是相同的。在C++函数中,
__PRETTY_FUNCTION__
包括函数返回类型等额外信息,Linux内核只使用了
__FUNCTION__
。
- 这里
__FUNCTION__
将被替换为函数名ext2_update_dynamic_rev
。 - 虽然
__FUNCTION__
看起来类似于标准C中的__FILE__
,但实际上__FUNCTION__
是被编译器替换的,不象__FILE__
被预处理器替换。 - 在C99中支持
__func__
宏,因此建议使用__func__
替代__FUNCTION__
。