xerces c++;XML解析器在windows上使用wchar_t for XMLCh,但在linux上使用uint16_t。这会导致移植我的应用程序时出现问题 我已经开发了一个使用Windows和CygWin的C++应用程序,并希望它

xerces c++;XML解析器在windows上使用wchar_t for XMLCh,但在linux上使用uint16_t。这会导致移植我的应用程序时出现问题 我已经开发了一个使用Windows和CygWin的C++应用程序,并希望它,c++,xml,linux,xerces-c,C++,Xml,Linux,Xerces C,xerces c++;XML解析器在windows上使用wchar_t for XMLCh,但在linux上使用uint16_t。这会导致移植我的应用程序时出现问题 我已经开发了一个使用Windows和CygWin的C++应用程序,并希望它能在我的Linux系统上工作。我正在使用Xerces xml解析器库,由于XMLCh类型的用法不同,在编译时遇到了问题。在windows上它被映射到wchar\u t,但在Linux上它被映射到uint16\u t。我在发行说明中看到,它说“如

xerces c++;XML解析器在windows上使用wchar_t for XMLCh,但在linux上使用uint16_t。这会导致移植我的应用程序时出现问题
我已经开发了一个使用Windows和CygWin的C++应用程序,并希望它能在我的Linux系统上工作。我正在使用Xerces xml解析器库,由于XMLCh类型的用法不同,在编译时遇到了问题。在windows上它被映射到wchar\u t,但在Linux上它被映射到uint16\u t。我在发行说明中看到,它说“如果指定了选项/Zc:wchar___t,那么将XMLCh映射到wchar_________________________________。我是要使用此选项重新编译xerces源代码,还是要将其用作我的应用程序的编译选项。当我将它用于我自己的应用程序时,它似乎不起作用,而且我也找不到任何在线资源来帮助我。这个选项听起来像是什么,如果是的话,是什么步骤让它工作?谢谢

“/Zc:wchar\u t”是一个Visual Studio选项。在其他系统上找不到它。使用类似于
XMLCh
的东西的全部意义在于,它可以在不同的系统上有所不同。您实际上遇到了什么问题?我编写的代码使用XMLCh作为wchar\u t,我不想更改我的实现。因为这个原因,我得到了编译错误。嗯
XMLCh
不是
wchar\u t
XMLCh
是一种用于UTF-16编码字符串的2字节类型。
wchar\u t
的大小未定义(在您的系统上很可能是4个字节),并且不一定适合UTF-16;xerces在Windows上的实现使用XMLCh typedefed to wchar\t。我已经编写了符合这个标准的代码,现在由于实现上的差异而出现编译错误。有没有一种简单的方法可以让我的代码工作而不必做大量的更改,或者我必须在每个系统上有不同的应用程序实现?在任何地方使用
XMLCh
,不要假设它是
wchar\t
。如果需要将
XMLCh
字符串传递给代码的其他部分,请将其转换为适当的编码。在Linux上,
wchar\u t
通常是适合UTF-32的4字节类型。在C++中,你必须考虑处理文本时的编码。