广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言 OutputDebugString与格式化输出函数OutputDebugPrintf案例详解
  • 938
分享到

C语言 OutputDebugString与格式化输出函数OutputDebugPrintf案例详解

2024-04-02 19:04:59 938人浏览 八月长安
摘要

OutputDebugString属于windows api的,所以只要是包含了window.h这个头文件后就可以使用了。可以把调试信息输出到编译器的输出窗口,还可以用Db

OutputDebugString属于windows api的,所以只要是包含了window.h这个头文件后就可以使用了。可以把调试信息输出到编译器的输出窗口,还可以用DbgView(本机或tcp远程)这样的工具查看,这样就可以脱离编译器了。  

OutputDebugString 默认只能输入一个参数,不能像printf那样格式化输出,下面改造成类似printf函数的输出方式。


#include <windows.h>
#include <stdio.h>
//#include <stdlib.h>
#include <stdarg.h>
 
#define IS_USE_OUTPUT_DEBUG_PRINT   1
 
#if  IS_USE_OUTPUT_DEBUG_PRINT 
 
#define  OUTPUT_DEBUG_PRINTF(str)  OutputDebugPrintf(str)
void OutputDebugPrintf(const char * strOutputString, ...)
{
#define PUT_PUT_DEBUG_BUF_LEN   1024
	char strBuffer[PUT_PUT_DEBUG_BUF_LEN] = { 0 };
	va_list vlArgs;
	va_start(vlArgs, strOutputString);
	_vsnprintf_s (strBuffer, sizeof(strBuffer) - 1, strOutputString, vlArgs);  //_vsnprintf_s  _vsnprintf
	//vsprintf(strBuffer,strOutputString,vlArgs);
	va_end(vlArgs);
	OutputDebugStringA(strBuffer);  //OutputDebugString    // OutputDebugStringW
 
}
#else 
#define  OUTPUT_DEBUG_PRINTF(str) 
#endif

 使用实例:

OutputDebugPrintf("DEBUG_INFO | %d %s",600019,"hello");

然后在 DbgView 设置一个过滤:DEBUG_INFO,抓取固定的输出。

Unicode模式下,OutputDebugString要求一个 wchar_t 而不是char,而sprintf则需要char参数,那我们是不是一定要通过字符转换解决问题呢?

答案就是 OutputDebugStringA()

原因:Unicode模式,OutputDebugString会变成OutputDebugStringW。如果想用ANSI版本的,直接写OutputDebugStringA,或者设置工程属性,使用MBCS的编码集。

处理“error C2220: warning treated as error - no object file generated”错误"

产生原因为:有些Project编译选项中,Treat Warnings As Errors(把警告看作错误来处理)选项开启了。

只要把此选项关闭,就可以正常编译了。

在Solution中,选择工程,右键菜单中选择“Properties”。弹出的属性框中,将Configuration选择“All Configurations”,选择“C/C++/General/”,右侧Treat Warnings As Errors值从原来的“Yes(/WX)”改为“No(/WX-)”。

点击确定,再重新编译,即可。

怎样处理“error C2220: warning trea...”错误

到此这篇关于C语言 OutputDebugString与格式化输出函数OutputDebugPrintf案例详解的文章就介绍到这了,更多相关C语言 OutputDebugString与格式化输出函数OutputDebugPrintf内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言 OutputDebugString与格式化输出函数OutputDebugPrintf案例详解

本文链接: https://www.lsjlt.com/news/133176.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言 OutputDebugString与格式化输出函数OutputDebugPrintf案例详解
    OutputDebugString属于windows API的,所以只要是包含了window.h这个头文件后就可以使用了。可以把调试信息输出到编译器的输出窗口,还可以用Db...
    99+
    2022-11-12
  • C语言之格式化屏幕输出详解
    目录题目1:请打印输出以下图案。题目2:分别按如下三种形式,编程输出九九乘法表。总结 在一些问题中,问题经常规定了屏幕输出的格式,让我们以固定的格式编程输出某些图案或表格。我们分别以...
    99+
    2022-11-12
  • C语言 module_init函数与initcall案例详解
    module_init这个函数对做驱动的人来说肯定很熟悉,这篇文章用来跟一下这个函数的实现。 在include/linux/init.h里面有module_init的定义,自然,因为...
    99+
    2022-11-12
  • C语言格式化输出函数printf怎么使用
    这篇文章主要介绍“C语言格式化输出函数printf怎么使用”,在日常操作中,相信很多人在C语言格式化输出函数printf怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言格式化输出函数printf怎...
    99+
    2023-07-05
  • C语言详解格式控制符scanf与printf的输入输出
    目录一、使用scanf输入和printf输出1、scanf的使用2、printf的使用二、常用输出格式1、%md2、%0md3、%.mf三、使用getchar输入putchar输出单...
    99+
    2022-11-13
  • C语言进阶输入输出重定向与fopen函数使用示例详解
    目录正片开始输入输出重定向fopen函数正片开始 大多数情况下,我们所熟知的输入输出都是标准I/O(标准输入输出),也就是我们在写代码时会直接从键盘读取,从屏幕输出。但是当我们涉及到...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作