c++ - 在没有 CRT 的情况下转换 DWORD,实现自定义 sprintf() 函数

标签 c++ c printf msvcrt

背景:

我的应用程序没有 CRT,因为它必须便携且体积小。

问题:

当我在 Windows XP 的虚拟机上运行我的应用程序时,我的 CreateProcess() 函数失败,我需要显示 GetLastError() DWORDMessageBox() 中,不使用任何 CRT,

如何在我的程序中手动实现 sprintf() 函数,将 DWORD 类型转换为 char buffer 以显示在 MessageBox() 函数获取错误类型,因此我可以解决问题。

我已经像这样实现了自己的memset()函数

extern "C" void * __cdecl memset(void *, int, size_t);


#pragma function(memset)
void * __cdecl memset(void *pTarget, int value, size_t cbTarget) {
unsigned char *p = static_cast<unsigned char *>(pTarget);
while (cbTarget-- > 0) {
    *p++ = static_cast<unsigned char>(value);
}
return pTarget;
}

我不确定如何实现自定义 sprintf() 函数

谢谢

最佳答案

wsprintf 在没有 CRT 的 Windows 中可用。只是#include windows.h

关于c++ - 在没有 CRT 的情况下转换 DWORD,实现自定义 sprintf() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16879307/

相关文章:

c++ - 在 C++ 中复制数组的一个问题

c++ - 我可以更改默认继承的访问器吗?

C 查询字符串解析

c - 找一个长度为1到10的随机数,使用数字0到9不重复

c - printf() 中的格式说明符在应为 char 时要求输入 int

c - sprintf 崩溃,但不清楚原因

c++ - Swig、Python、C++ : TypeError: in method 'Geodatabase_Open' , 类型 'std::string' 的参数 2

c++ - 为什么带括号的include找不到头文件?

c - 包含一元运算符的程序的输出

c - C 中无法打印 long long 整数