MFC中使用printf输出调试信息

*************************************文章内容无意义,存档用****************************************


MFC程序中要输出调试信息基本只能用edit控件显示内容,比较麻烦。使用printf显示的做法如下:

【假设为对话框应用程序】

1、首先在CXXXDlg的初始化函数OnInitDialog的最前面增加如下代码:

#ifdef _DEBUG
	AllocConsole();
#endif
如图所示:



2、然后在退出函数(对话框为OnOk函数)中添加代码:FreeConsole();

如何添加OnOk函数参考这里:http://blog.csdn.net/holybin/article/details/25446913

如图所示:


3、最后修改工程的配置信息。一般是通过这个配置属性“/SUBSYSTEM:WINDOWS”来修改的,它在工程“属性”的“linker-System-Subsystem”中,如下图所示:


我们可以通过修改该项为“/SUBSYSTEM:CONSOLE”来使程序能够显示命令行,但是直接修改后会报链接错误,原因是不同类型的程序有不同的程序入口。所以简单点的做法是直接在头文件stdafx.h中添加如下代码【vs2005/2008均可以】:

#ifdef _DEBUG
#pragma comment( linker, "/subsystem:console /entry:wWinMainCRTStartup" )
#endif
注意:这里的改法适用于vs2005和vs2008,对于不同的IDE具体要怎么改,参考项目“属性”中“Linker-Command line”中的内容,如下图所示(我这里是vs2008):



4、改完之后试试在OnInitDialog最后加一句printf:



【假设为单文档或者多文档应用程序】

做法与对话框类似。

1、在应用程序CXXXApp的InitInstance函数中添加如下代码:

#ifdef _DEBUG
	AllocConsole();
#endif
如图所示:



2、在“类视图”中选择CXXXApp类,在属性页的“重写”中添加ExitInstance函数,如图所示:


3、在ExitInstance函数中添加FreeConsole();。如图所示:



4、同样滴在InitInstance最后加一句printf



***************************************************************************

PS1:链接时提示“microsoft incremental linker已停止工作”的解决方法

vs2008出现“Microsoft Incremental Linker已停止工作”解决办法


PS2:有时候printf或者cout无法使用,此时需要将输出函数换成_cprintf(要添加所需的头文件#include<conio.h>,且注意编码)或者WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE)...)


  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值