__FUNCTION__, __FILE__, __LINE__
来源:互联网 发布:sk2神仙水 知乎 编辑:程序博客网 时间:2024/04/29 02:49
转载自:http://keendawn.blog.163.com/blog/static/88880743201032695611992/
__FUNCTION__,__FILE__,__LINE__在C/C++编程中,这3个变量分别为当前函数名(char *),当前文件(char *),当前行号(int).
作为一个C++程序员,可能经常遇到 __TIME__、__FILE__、__DATE__ 这样的宏,它们会在编译时,分别转换为包含编译时间、处理的转换单元名称及当前时间的字符串。
在最新的ISO C标准中,如大家所知的C99,加入了另一个有用的、类似宏的表达式__func__,其会报告未修饰过的(也就是未裁剪过的)、正在被访问的函数名。请注意,__func__不是一个宏,因为预处理器对此函数一无所知;相反,它是作为一个隐式声明的常量字符数组实现的:
static const char __func__[] = "function-name";
在function-name处,为实际的函数名。为激活此特性,某些编译器需要使用特定的编译标志,请查看相应的编译器文档,以获取具体的资料。
官方C99标准为此目的定义的__func__标识符,确实值得大家关注,然而,ISO C++却不完全支持所有的C99扩展,因此,大多数的编译器提供商都使用 __FUNCTION__ 取而代之,而 __FUNCTION__ 通常是一个定义为 __func__ 的宏,之所以使用这个名字,是因为它已受到了大多数的广泛支持。
在Visual Studio 2005中,默认情况下,此特性是激活的,但不能与/EP和/P编译选项同时使用。请注意在IDE环境中,不能识别__func__ ,而要用__FUNCTION__ 代替。
Comeau的用户也应使用 __FUNCTION__ ,而不是 __func__ 。
C++ BuilderX的用户则应使用稍稍不同的名字:__FUNC__ 。
GCC 3.0及更高的版本同时支持 __func__ 和__FUNCTION__ 。
使用举例:
void Your_Function(...){ ....... printf("Entering %s\n",__FUNCTION__); ..... .....}
0 0
- __LINE__,__FILE__,__FUNCTION__
- __FILE__, __FUNCTION__, __LINE__
- __FUNCTION__,__FILE__,__LINE__
- __FUNCTION__,__FILE__,__LINE__
- __FILE__, __FUNCTION__, __LINE__
- __FILE__, __FUNCTION__, __LINE__
- __FILE__, __FUNCTION__, __LINE__
- __FUNCTION__ __FILE__ __LINE__
- __FUNCTION__, __FILE__, __LINE__
- __FILE__, __LINE__ __FUNCTION__
- __FILE__,__LINE__,__DATE__,__TIME__,__FUNCTION__
- __DATE__,__FILE__,__LINE__,__TIME__,__FUNCTION__
- 代码定位:__FILE__, __FUNCTION__, __LINE__
- __FILE__,__LINE__,__FUNCTION__的妙用
- __FILE__,__LINE__,__DATE__,__TIME__, __FUNCTION__
- 代码定位:__FILE__, __FUNCTION__, __LINE__
- __FILE__,__LINE__,__DATE__,__TIME__,__FUNCTION__
- linux driver: __FILE__, __FUNCTION__, __LINE__
- 112家IT公司薪水一览表(参考)
- java编程规范之java命名规范
- 递归输出二叉树的每个结点
- 深入Java关键字null
- 改写sys.stdout导致pycharm不能调试
- __FUNCTION__, __FILE__, __LINE__
- 利用sqlnet.ora限制IP访问
- HBase总结(十五)HBase数据恢复
- IP报文格式详解
- JS类的封装及实现代码(静态)
- 无法解析的外部符号
- C++ time 的使用
- ORACLE 数据库基本参数查询
- http协议