服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言 OutputDebugString与格式化输出函数OutputDebugPrintf案例详解

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

2021-12-20 15:20EmbededCoder C/C++

这篇文章主要介绍了C语言 OutputDebugString与格式化输出函数OutputDebugPrintf案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

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

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

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-)”。

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

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

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

原文链接:https://blog.csdn.net/u012308586/article/details/92992951

延伸 · 阅读

精彩推荐