有关文件中DEBUG定义的解释!
2008-07-17 13:19
267 查看
在VC生成的文件或者其他的源码里一般都会有如下代码:
__FILE__和__LINE__都是编译器定义的宏。当碰到__FILE__时,编译器会把__FILE__替换成一个字符串,这个字符串就是当前在编译的文件的路径名。当碰到__LINE__时,编译器会把__LINE__替换成一个数字,这个数字就是当前这行代码的行号。在DEBUG_NEW的定义中没有直接使用__FILE__,而是用了THIS_FILE,其目的是为了减小目标文件的大小。假设在某个cpp文件中有100处使用了new,如果直接使用__FILE__,那编译器会产生100个常量字符串,这100个字符串都是这个cpp文件的路径名,显然十分冗余。如果使用THIS_FILE,编译器只会产生一个常量字符串,那100处new的调用使用的都是指向常量字符串的指针。
#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
__FILE__和__LINE__都是编译器定义的宏。当碰到__FILE__时,编译器会把__FILE__替换成一个字符串,这个字符串就是当前在编译的文件的路径名。当碰到__LINE__时,编译器会把__LINE__替换成一个数字,这个数字就是当前这行代码的行号。在DEBUG_NEW的定义中没有直接使用__FILE__,而是用了THIS_FILE,其目的是为了减小目标文件的大小。假设在某个cpp文件中有100处使用了new,如果直接使用__FILE__,那编译器会产生100个常量字符串,这100个字符串都是这个cpp文件的路径名,显然十分冗余。如果使用THIS_FILE,编译器只会产生一个常量字符串,那100处new的调用使用的都是指向常量字符串的指针。
相关文章推荐
- linux系统中/etc/passwd ; /etc/shadow ; /etc/group 这个三个有关用户信息的文件解释
- 关于C++泛型编程,模板声明和定义最好在同一个文件的解释。
- IAR 430 头文件中#define定义的部分解释
- IAR 430 头文件中#define定义的部分解释
- linux系统中/etc/passwd ; /etc/shadow ; /etc/group 这个三个有关用户信息的文件解释
- IAR 430 头文件中#define定义的部分解释
- 关于为什么不能在头文件中包含变量定义的解释
- IAR 430 头文件中#define定义的部分解释
- linux系统中/etc/passwd ; /etc/shadow ; /etc/group 这个三个有关用户信息的文件解释
- 使用notepad++删除webrtc中的所有相关的vcxproj文件中有关ninja属性字段的定义
- [C/C++]在头文件中使用static定义变量意味着什么
- goldengate使用定义文件注意问题
- bug和debug的定义
- Struts2中有关struts-default.xml,struts.xml,struts.properties文件详解
- linux 里 /etc/passwd 、/etc/shadow和/etc/group 文件内容解释
- 解决Flex项目下bin-debug文件在其他电脑打开不显示的问题
- ASP.NET配置文件Web.config 详细解释
- 有关import sun.audio.AudioPlayer(或者其它文件)的问题
- web.config文件的中文解释
- C++ - 将模板的声明和定义放置在同一个头文件里