8、当前函数名
- GNU C中预定义两个标志符保存当前函数的名字,
__FUNCTION__
保存函数在源码中的名字,
__PRETTY__FUNCTION__
保存带语言特色的名字。
- 在C函数中这两个名字是相同的。在C++函数中,
__PRETTY_FUNCTION__
包括函数返回类型等额外信息,Linux内核只使用了
__FUNCTION__
。
//fs/ext2/super.c
void ext2_update_dynamic_rev(structsuper_block* sb)
{
structext2_super_block * es = EXT2_SB(sb)->s_es;
if(le32_to_cpu(es->s_rev_level)->EXT2_GOOD_OLD_REV)
return;
ext2_warning(sb,__FUNCTION__,"\
updatingtorev%dbecauseofnewfeatureflag",\
"runninge2fsckisrecommended",\
EXT2_DYNAMIC_REV);
}
- 这里
__FUNCTION__
将被替换为函数名ext2_update_dynamic_rev
。
- 虽然
__FUNCTION__
看起来类似于标准C中的__FILE__
,但实际上__FUNCTION__
是被编译器替换的,不象 __FILE__
被预处理器替换。
- 在C99中支持
__func__
宏,因此建议使用__func__
替代__FUNCTION__
。
网友评论