- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 Windows 上使用 MinGW g++ 编译器(gcc 版本 4.8.1),我对 swprintf 声明感到困惑
根据 this reference应该是
int swprintf (wchar_t* ws, size_t len, const wchar_t* format, ...);
但是当我使用
swprintf(my_ws, 32, L"hello");
我收到错误
initializing argument 2 of 'int swprintf(wchar_t*, const wchar_t*, ...)' [-fpermissive]
看起来 size_t len
不在声明中。引用有误吗?我是不是漏掉了什么,或者这背后有什么故事?
最佳答案
您正在使用不符合 C99 标准的 C 库。
MinGW 是 gcc
的一个端口,它使用 Microsoft C 运行时库。
在标准化为 C99 之前,Microsoft 有自己的 swprintf
版本,但原型(prototype)不同。这是一个非常古老的 C 库,有很多 C99 不兼容性,例如我认为它的 printf
不支持 %zu
for size_t
。 ..
如果他们使用更新的运行时,您应该升级到更新版本的 MinGW。否则,您将不得不使用旧原型(prototype),并忍受这些过时的 API。
关于c++ - swprintf 声明不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35072373/
我正在尝试使用 RtlStringCbPrintfW (swprintf 的安全版本),并在将 int 附加到字符串时得到意外结果。 如果我在 int 之后附加相同的字符串 - 一切正常。所以我的代码
求助!我对 C 语言一无所知,但我必须对 C 代码做一点补充。 我从 GetLastError 得到一个错误号 (int) 并将它显示到一个表单中。相反,我需要获取实际的错误字符串。 我添加了对 Fo
以下代码行在 Visual Studio 2010 中产生垃圾: swprintf(buf, L"Value is %s", "abcd"); 但是,相同的代码在 Linux 上运行良好。 通过试用,
我在 Windows 上使用 MinGW g++ 编译器(gcc 版本 4.8.1),我对 swprintf 声明感到困惑 根据 this reference应该是 int swprintf (wch
我正在修复在 linux 和 windows 上运行的遗留代码,在某些情况下,本应包含格式化内容的缓冲区小于该内容。 代码使用根据 documentation 的 swprintf size - up
我正在尝试从 javascript 执行此操作 swprintf(hexResult, L"%I64X", result);,这可能吗?这样 CityHash64('C:\Program Files
还有人遇到过这样的问题吗? swprintf_s(v, len, L"%ws", var); MessageBox(NULL, v, NULL' NULL); 消息框打印出“%ws”而不是var的内容
在调用swprintf 将char 转换为wchar 后,调用循环会触发段错误;循环 header 中的语句在循环上下文之外工作正常。 swprintf 命令基于返回值 (3, which is th
这发生在 OS X 上,但我怀疑它适用于任何 UNIX-y 操作系统。我有两个如下所示的字符串: const wchar_t *test1 = (const wchar_t *)"\x44\x00\x
我正在尝试使用 MinGW 在 Windows 上编译 Botan,但在编译期间收到以下错误: c:\qt\2010.04\mingw\bin\../lib/gcc/mingw32/4.4.0/inc
我尝试使用 swprintf(buff, 4, L"%#03x", value),但是当 value = 0 时,我得到 000 而不是 0x0。 最佳答案 您需要字面值中的“0x”,例如“0x%03
大部分时间我在 Android 上使用 UTF-8,但我最近也在测试 wchar_t。我知道 wchar_t 在早期很糟糕,但我不关心太旧的设备,所以认为现在使用 wchar_t 会很好。 测试于:
以下代码行与 Visual Studio 2013 一起运行: wchar_t test[] = L"\xffff"; wchar_t buf[100]; int ret = swprintf(
到目前为止,我已经在 visual studio 中编写了所有代码,现在我需要向其中添加一些 UI,因此我将使用 Qt。所以我在我的项目中添加了每个文件(主类除外),然后尝试使用 Qt 编译它。因为我
wide char printf 单个字符发生了什么? VS10 和 MCBS: #include #include int const maxPathFolder = MAX_PATH - 3;
我正在尝试将 char* 字符串转换为 wchar_t*。我看到这个问题已经被问了很多次,但没有解决/可移植的答案/解决方案。 按照建议here , swprintf 对我来说似乎是正确的解决方案,但
以下几行都“按预期工作”: wchar_t u[50], v[50]; swprintf(u, 50, L"%s", L"hello"); swprintf(v, 50, L"%ls", L"good
我正在编写一个 Excel 插件,需要生成 wchar_tExcel 的输出(尽管在内部,我们是 100% char,并且实际上将 char 限制为纯 ASCII)。有一次,我正在使用swprintf
我有一个多平台项目,它在 mac 上编译得很好,但是在 Windows 上,我所有带有 %s 的 swprintf 调用都在寻找 wchar_t 而不是 char * 我通过它。结果 M$ 认为在宽字
在尝试转换一些现有代码以支持 unicode 字符时,突然出现了这个问题。如果我尝试将 unicode 字符(在本例中使用欧元符号)传递给任何 *wprintf 函数,它将失败,但似乎只在 xcode
我是一名优秀的程序员,十分优秀!