码迷,mamicode.com
首页 > 其他好文 > 详细

__FUNCTION__, __LINE__ 有助于debug的宏定义

时间:2014-08-17 22:49:32      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:gcc   c   


__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.com

code 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;
}


bubuko.com,布布扣


注意,这里的宏定义是不会根据运行时环境变化的,不管我在哪个目录下运行这个demo,这里的__FILE__打印出来的字符都永远提示./hello.c 以为还是当前目录,其实运行环境已经发生变化.


当然这些宏定义是十分有助于debug的.










__FUNCTION__, __LINE__ 有助于debug的宏定义,布布扣,bubuko.com

__FUNCTION__, __LINE__ 有助于debug的宏定义

标签:gcc   c   

原文地址:http://blog.csdn.net/cinmyheart/article/details/38644857

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!