__FUNCTION__, __LINE__ 有助于debug的宏定义
Posted yxysuanfa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__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 : [email protected] 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; }
注意,这里的宏定义是不会依据执行时环境变化的,无论我在哪个文件夹下执行这个demo,这里的__FILE__打印出来的字符都永远提示./hello.c 以为还是当前文件夹,事实上执行环境已经发生变化.
当然这些宏定义是十分有助于debug的.
以上是关于__FUNCTION__, __LINE__ 有助于debug的宏定义的主要内容,如果未能解决你的问题,请参考以下文章
__FILE__、__LINE__ 和 __FUNCTION__ 在 C++ 中的用法
C语言便于调试的宏定义 __FILE____FUNCTION____LINE____VA_ARGS__ 参数使用
C++中的三个特殊宏:__FILE__,__FUNCTION__和__LINE__
C:_debug_printf,基于vsnprintf 或 vprintf实现带时间戳和源码信息(__FILE__,__FUNCTION__, __LINE__)的格式化打印输出
C语言预定义宏 __func____FUNCTION____LINE____FILE____DATE____TIME__