使用宏调试 实现 debug release 版本程序
2012-10-07 08:59
260 查看
使用宏调试
编译时命令为: gcc -DMYDEBUG -o debug debug.c
输出为:error my debug
通过宏调试来可以实现 书写Debug版和Release版的程序
于是,预编译器发现MYDEBUG变量被定义了,就会使用DPRINT函数,并输出出错信息(fprintf)。而如果要发布给用户了,那么只需要把取消“-DMYDEBUG”的参数,于是所有用到DPRINT宏,这个宏什么都没有,所以源程序中的所有DPRINT语言全部被替换成了空。一箭双雕,何乐而不为呢?
顺便提一下,两个很有用的系统宏,一个是“__FILE__”,一个是“__LINE__”,分别表示,所在的源文件和行号,当你调试信息或是输出错误时,可以使用这两个宏,让你一眼就能看出你的错误,出现在哪个文件的第几行中。这对于用C/C++做的大工程非常的管用。
#include <stdio.h> #ifdef MYDEBUG #define DPRINT(stuff) fprintf stuff #else #define DPRINT(stuff) #endif // 编译时加上 -DMYDEBUG 预处理,就可以使用宏调试 int main() { char *s = "my debug"; DPRINT ((stderr, "error %s\n", s)); return 0; }
编译时命令为: gcc -DMYDEBUG -o debug debug.c
输出为:error my debug
通过宏调试来可以实现 书写Debug版和Release版的程序
于是,预编译器发现MYDEBUG变量被定义了,就会使用DPRINT函数,并输出出错信息(fprintf)。而如果要发布给用户了,那么只需要把取消“-DMYDEBUG”的参数,于是所有用到DPRINT宏,这个宏什么都没有,所以源程序中的所有DPRINT语言全部被替换成了空。一箭双雕,何乐而不为呢?
顺便提一下,两个很有用的系统宏,一个是“__FILE__”,一个是“__LINE__”,分别表示,所在的源文件和行号,当你调试信息或是输出错误时,可以使用这两个宏,让你一眼就能看出你的错误,出现在哪个文件的第几行中。这对于用C/C++做的大工程非常的管用。
相关文章推荐
- 使用Release库的Debug版本调式程序
- 如何使用Cmake生成debug版本和release版本的程序
- 如何使用VC++调试程序 Debug版本与Release版本
- 如何使用VC++调试程序 Debug版本与Release版本
- Debug与Release版本程序运行速度的比较
- C#.NET常见问题(FAQ)-如何生成release版本的程序,生成debug版本的程序
- 编译成release版本与debug版本的程序有何执行上的区别?
- cocos2dx: win32程序Release和debug版本:lua:print函数
- 使用vs2010 opencv2.4.4编译release版本程序
- 使用Windows API实现运行时动态获取程序文件版本信息
- 编译成release版本与debug版本的程序有何执行上的区别?
- VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下运行
- [2011-11-22] 教训:请记住如果要真正运行程序,要将项目从DEBUG改成RELEASE版本
- 为什么我的程序debug版本运行没有问题,而release版本总是报错?
- C++ 程序DEBUG和RELEASE版本的区别
- 关于程序的Debug和Release版本的注意
- 如何指定让Android的NDK工具编译出Release版本或Debug版本的Native程序
- .net程序的Debug版本和Release版本的不同
- mfc对话框程序在ide编译可运行,但编译完毕的debug和release版本不能运行。。后来发现原因是:用到的sqlite数据库文件没在对应目录下,而代码中没有try..catch..
- C#.NET常见问题(FAQ)-如何生成release版本的程序,生成debug版本的程序