本文主要是介绍__FUNCTION__, __LINE__ 有助于debug的宏定义,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
__FUNCTION__, __LINE__
今天无意之间看到一段代码,里面有这样一个片段:
if (!interface) {err ("%s - error, can't find device for minor %d",__FUNCTION__, subminor);retval = -ENODEV;goto exit;}
这个__FUNCTION__干嘛的?少见(本人水平不够~),有意思~
后面找了一下,这个是和编译器GCC相关连的宏定义,而这些宏定义的时候有助于快速定位程序报错或警告的位置,在文件中的行数(__LINE__)
给出demo
/*************************************************
code writer : EOF
code date : 2014.08.17
code file : macro_demo.c
e-mail : jasonleaster@gmail.comcode purpose:This code is a demo for how to use some
special macros -- __FILE__ __FUNCTION__ __LINE__
__DATE__ . It's funny and useful to use this Macro
to help you to debug.If there is something wrong with my code,
please touch me by e-mail.**************************************************/#include <stdio.h>void hello(void)
{printf("__FILE__ :%s __FUNCTION__:%s __LINE__:%d __DATE__:%s\n",__FILE__,__FUNCTION__,__LINE__,__DATE__);
}int main()
{printf("__FILE__ :%s __FUNCTION__:%s __LINE__:%d __DATE__:%s\n",__FILE__,__FUNCTION__,__LINE__,__DATE__);hello();return 0;
}
注意,这里的宏定义是不会根据运行时环境变化的,不管我在哪个目录下运行这个demo,这里的__FILE__打印出来的字符都永远提示./hello.c 以为还是当前目录,其实运行环境已经发生变化.
当然这些宏定义是十分有助于debug的.
这篇关于__FUNCTION__, __LINE__ 有助于debug的宏定义的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!