__FILE__,__LINE__
来源:互联网 发布:瓯江学院c语言网址 编辑:程序博客网 时间:2024/04/19 16:45
见的情况是,我们实现了一个函数,希望它只在某种编译条件满足是被编译和使用。例如,我希望在源码中插入调试语句,以便以Debug方式运行时能够通过调试信息观察程序运行情况。但是,在产品发售给用户时,我又希望这些调试信息不要输出,以降低代码尺寸,提高运行性能。 这一问题的解决方法就是使用宏。根据条件编译指令,对于不同的编译条件,提供不同的实现。例如:我们希望在特定的位置向日志中写入当前行号和文件名,以判断对应代码是否被执行到,可以使用下面的宏:
#ifdef _DEBUG #define TRACE_FILE_LINE_INFO() do{/ CString str;/ str.Format(_T("file=%s,line=%u/r/n",__FILE__,__LINE__);/ CFile file("logfile.txt");/ file.Write(str,str.GetLength());/ }while(0) #else #define TRACE_FILE_LINE_INFO() #endif
上面这段代码通过#ifdef #else #endif三个条件编译指令,根据_DEBUG定义情况(该宏用于区分DEBUG版本和Release版本),决定了具体的TRACE_FILE_LINE_INFO宏函数的实现。使用者可以用如下方法使用
TRACE_FILE_LINE_INFO();//这里显示行号和文本信息
当然,采用其他方式也可以实现这一功能,但是使用宏有以下特殊好处: 只有需要的代码才会被编译,减少了符号表的尺寸,也减少了代码尺寸 宏在编译时被展开,因此用于表示代码位置的__FILE__,__LINE__宏可以起作用,如果用函数实现,这两个宏则不能起作用。
- __FILE__,__LINE__
- __FILE__ __LINE__
- __FILE__, __LINE__,
- __FILE__、__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- __FILE__,__LINE__
- 我们的第一个iPhone程序
- 数据库设计的三范式
- Natasha Bedingfield - Pocketful Of Sunshine
- Natasha Bedingfield - Soulmate
- #pragma data_seg介绍
- __FILE__,__LINE__
- ASP.NET跨页面传值的几种方法
- wsprintf vs sprintf
- 呵呵,最近被入侵了。系统日志 .......
- 字符
- Java中格式化输出数字
- 急急急急急急急!!!我想成为IT人士………………
- 点滴
- 只是这样