1、在项目自动生成的stdafx.h文件中添加下面头文件

#include <io.h>

#include <fcntl.h>

#include <stdio.h>

 

2、把下面的函数加到你初始化的地方,然后你就可以使用printf函数了

void InitConsoleWindow()

{

    int nCrt = 0;

    FILE* fp;

    AllocConsole();

    nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);

    fp = _fdopen(nCrt, "w");

    *stdout = *fp;

    setvbuf(stdout, NULL, _IONBF, 0);

}

以下红色部分是我初始化函数中添加的

BOOL CSerialPortptestDlg::OnInitDialog()

{

 CDialogEx::OnInitDialog();

  CString str;

 int    Index;

 HKEY   hKey;

 LONG   ret;   

  OSVERSIONINFO     osvi;   

  BOOL   bOsVersionInfoEx;   

 char   keyinfo[100],comm_name[200],ValueName[200];   

 int   i;   

 DWORD   sType,Reserved,cbData,cbValueName;

 // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动

 //  执行此操作

 SetIcon(m_hIcon, TRUE);   // 设置大图标

 SetIcon(m_hIcon, FALSE);  // 设置小图标

 InitConsoleWindow();

 printf( "str   =   %s\n ",   "debug");

调用此函数后会弹出一个CONSOLE,然后printf的东西就会出现在上面。

原地址请见:http://blog.csdn.net/yewenlin/article/details/7658714

【补充】

1,VS可以直接TRACE在IDE上,为什么我们还需要用终端?

如果是在开发环境上,那手段就很多了,是可以很方便的查看问题。

但是如果在目标机上呢?客户的PC端基本上没见过装VS的,那怎么办?

程序写得多了,有时候还是喜欢用这种类似打印的方式来调试和定位错误,这个自己去体会,其实比设置断点什么的有效率得多。

2,这个在VS2013上测试过,也是可以使用的。

3,这个console的方式好就好在,只要初始化一次,在所有的窗口里面都可以直接printf。

4,我还有一个疑问,程序的初始化中,用到了open类的指令和相关指针,不需要close和释放指针操作吗?

这个问题原贴没有涉及,我觉得严谨的话也是应该考虑的。

VC2010 MFC中实现printf调试功能,即MFC程序利用控制台输出调试信息。的更多相关文章

  1. C++ MFC控制台输出调试信息

    1.#include <conio.h> 2.在需要开启控制台窗口的地方调用 AllocConsole();//注意检查返回值 3.在需要输出调试的时候调用_cprintf等函数 如_cp ...

  2. MFC 中的 “printf” 函数

    怀念C语言的我,MFC没法使用的C语言printf函数,于是: int MFCprintf(const char* m_data, ...){ CString str; char printf_buf ...

  3. mfc中Button、Edit Control和MFC EditBrowse Control的用法

    [前(fei)言(hua)] 写LL(1)分析器被CString转string卡了一个多小时也是醉了. 趁着还算清醒写下这次用到的控件的使用方法好了. 这次实验的mfc用到了四个控件:Edit Con ...

  4. MFC程序显示控制台输出

    有的时候,我们用c写的一些东西,可能需要MFC作为UI输入参数进行测试,但是程序里有大量的printf操作,这就需要MFC程序启动的时候同时打开 一个控制台,用于标准输出 查询网络,大致方法有以下两种 ...

  5. Log4j 2.0在开发中的高级使用具体解释—配置简单的控制台输出(三)

    Log4j 2.0在近期迎来了重大的版本号升级.攻克了1.x中死锁bug之外,性能也有10倍的提升. 相同的在最新版本号中的新特性中. 配置文件也不只局限于xml和java特性文件properties ...

  6. VS中为非控制台程序提供控制台输出窗口

    /************************************************************************/ /* 模块名:ConsoleAdapter 文件名 ...

  7. 在MFC中使用Cstring

    此文介绍了关于MFC使用CString的资料,可一参考一下. 转自于VC知识库:http://www.vckbase.com/index.php/wv/829 通过阅读本文你可以学习如何有效地使用 C ...

  8. MFC中使用FLASH

    一.准备工作 第一步:下载并安装Adobe Flash Player. 从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的Flash Player(大约 ...

  9. ubuntu安装带调试功能的bochs

    ①进入bochs官网下载源码包 说明 用安装包直接安装没有调试功能 下载源码包步骤 a.输入网址:http://bochs.sourceforge.net/ b.单击图中红色标注图标 c.单击图中红色 ...

随机推荐

  1. POM.xml 标签详解

    pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以 ...

  2. Java后台传前台json数组

    function checkStore(){ var flag=1; $.ajax({ url:"widget?type=shop_cart&ajax=yes&action= ...

  3. Head First 设计模式 --8 模板方法模式 别找我,我会找你

    模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤.设计原则:1.封装变化2.多用组合少用集成3.针对接口变 ...

  4. c#遍历并判断实体或类的成员属性

    c#的Attribute有些类似java中的annotation,可以方便地在类成员中做修饰/限制作用. Demo: class ss { public stat BsonDocument Itera ...

  5. 基于讯为4412开发板的Android开发流程

    讯为4412开发板  使用三星2410芯片,基于arm9架构,由于自己电脑硬件的局限,只能跑Android4.0.3系统. 1.Uboot这个直接使用官方镜像烧写就可以了,一般情况不用去重复烧写. 略 ...

  6. VRP介绍以及AC初始化配置-06

    VRP介绍 VRP:多功能路由平台(Versatile Routing Platform) 角色:网络操作系统 支撑多种设备的软件平台 提供TCP/IP 路由服务 通用路由平台VRP(Versatil ...

  7. WPF仿Word头部格式,涉及DEV RibbonControl,NarvbarControl,ContentPresenter,Navigation

    时隔1个月,2015/06/17走进新的环境. 最近一个星期在学习仿Word菜单栏的WPF实现方式,废话不多说,先看一下效果. 打开界面后,默认选中[市场A],A对应的菜单栏,如上图, 选择[市场B] ...

  8. 20150514Linux下rpm包安装错误及解决方案

    (1)用rpm -ivh ***.rpm解压RedHat自带boost出现错误如下: warning: /media/RHEL_6.3 i386 Disc 1/Packages/boost-1.41. ...

  9. 解决安装vc2005运行库时提示Command line option syntax error.Type Command/?for Help

    安装vc2005运行库时提示 这是因为它要自解压到用户的临时文件夹下,如果用户名中带中文,就会报错. 简单的解决方法是,手动解压之,再安装 当然,你也可以修改用户名或者再新建个用户.

  10. (转)js activexobject调用客户机exe文件

    原文地址:http://blog.csdn.net/jiafugui/article/details/5364210 function Run(strPath) { try { var objShel ...